2011-09-25 21 views
5

Bir düğümü <extra>text1|text2|text3|text4</extra> düğümünden "|" dört bölüme ayırmaya çalışıyorum sınırlayıcı olarak ve aşağıdaki gibi 4 yeni düğüm yeniden.Xpath'de bölünmüş bir işlev var mı?

<g:test1>text1</g:test1> 
<g:test2>text2</g:test2> 
<g:test3>text3</g:test3> 
<g:test4>text4</g:test4> 

Açıkçası, çalışmıyor olan, ancak yapmaya çalıştığım şeyi açıklamam gereken kod.

<% 
Dim objXML, x 

Set objXML = CreateObject("MSXML2.DOMDocument") 
objXML.async = False 
objXML.setProperty "ServerHTTPRequest", True 
objXML.Load "http://www.thesite.com/v/myxml.xml" 
objXML.setProperty "SelectionLanguage", "XPath" 

Dim xmldoc: set xmldoc = CreateObject("MSXML2.DomDocument") 
xmldoc.async = false 

Dim instruction 
Set instruction = xmldoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8"" standalone=""yes""") 
xmldoc.appendChild instruction 

Dim rss: set rss = xmldoc.createElement("rss") 
xmldoc.appendChild rss 

Dim itemNode2: Set itemNode2 = xmldoc.selectSingleNode(".//rss") 
Dim name: Set name = xmldoc.createAttribute("xmlns:g") 
name.Value = "http://base.google.com/ns/1.0" 
itemNode2.attributes.setNamedItem(name) 

Dim itemNode: Set itemNode = xmldoc.selectSingleNode(".//rss") 
Dim version: Set version = xmldoc.createAttribute("version") 
version.Value = "2.0" 
itemNode.attributes.setNamedItem(version) 
Dim channel: set channel = xmldoc.createElement("channel") 
rss.appendChild channel 

For Each x In objXML.documentElement.selectNodes(".//SAVED_EXPORT") 
    Dim item: set item = xmldoc.createElement("item") 
    channel.appendChild item 

    Dim str1: Set str1 = x.selectSingleNode("extra") 
    Dim gstrarray 
    gstrarray = split(str1.text,"|") 

    Dim gstr1: set gstr1 = xmldoc.createElement("g:test1") 
    gstr1.text =gstrarry(0) 
    item.appendChild gstr1 
    Dim gstr2: set gstr2 = xmldoc.createElement("g:test2") 
    gstr2.text =gstrarry(1) 
    item.appendChild gstr2 
    Dim gstr3: set gstr3 = xmldoc.createElement("g:test3") 
    gstr3.text =gstrarry(2) 
    item.appendChild gstr3 
    Dim gstr4: set gstr4 = xmldoc.createElement("g:test4") 
    gstr4.text =gstrarry(3) 
    item.appendChild gstr4 
Next 
Response.Write xmldoc.xml 
%> 
+0

XPath'a nasıl bölüneceğinizi veya ASP'deki bölünmenin neden çalışmadığını mı düşünüyorsunuz? –

+0

Bir acemi için açıklamaya gerek yok eğer her ikisi de biraz sanırım. – user357034

cevap

6

XPath'ın 1.0 bir split() (veya eşdeğeri) işlevi yoktur.

XPath 2.0'da bir tokenize() işlevi vardır.

Bir XSLT 1.0 kullanarak bölme işlevleri uygulayabilirsiniz - xslt etiketinde good answers gayrimenkulünü birçok soru var.

+0

Bunun için, gelip benim için bir cevabın olacağını düşündüm :) Aptal soru, XPATH 2.0 kullanıp kullanamayacağını nasıl bilebilirdim. Burada gerçekten kayboldum. Sayfalara baktım ama fazla yardımcı olmadım. Yardım ettiğin için teşekkür ederim. – user357034

+0

@ user357034: XPath 2.0 uygulamasının .NET yerel uygulaması yoktur (ve SQL Server'ın XQuery uygulaması erken çalışma taslağıdır). Uyumlu bir XSLT 2.0 veya XQuery uygulaması kullanıyorsanız (Saxon 9.x gibi (özel bir Saxon.NET sürümüne sahip) veya XQSharp - özellikle .NET için yazılmışsa), ayrıca bunların bir parçası olarak XPath 2.0'a sahipsiniz. –

İlgili konular