XPath Fragen

29/03/2008 - 07:51 von Manfred | Report spam
Hallo Leute,

ich möchte auf folgende Struktur zugreifen:

<html>
<span id='TData'>
<xml>
<s:Schema id='RowsetSchema'
xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'>

<s:ElementType name='row' content='eltOnly'>
<s:AttributeType name='ID'><s:datatype dt:type='int'
rs:maybenull='false' /></s:AttributeType>
<s:AttributeType name='ARTIKEL'><s:datatype dt:type='string'
dt:maxLength='22' rs:maybenull='false' /></s:AttributeType>
<s:AttributeType name='NAME'><s:datatype dt:type='string'
dt:maxLength='63' /></s:AttributeType>
<s:AttributeType name='SPRACHE'><s:datatype dt:type='string'
dt:maxLength='15' rs:maybenull='false' /></s:AttributeType>
<s:extends type='rs:rowbase'/>
</s:ElementType>
</s:Schema>
<rs:data
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<z:row ID="3545" ARTIKEL="1901" NAME="Vite a pressione" SPRACHE="it" />
<z:row ID="3544" ARTIKEL="1901" NAME="Placa de Apoio" SPRACHE="PT" />
</rs:data>
</xml>
</span>
</html>

Ich habe dabei folgende Frage zu XPath:

Bis zum Knoten xml funktieoniert auch alles:

MsgBox(objXML.documentElement.selectSingleNode("/html/span/xml").nodeName)


Danach kann ich zwar feststellen, das die Childs "s:Schema " und "rs:data "
heißen,
aber der Gang zum nàchsten Knoten

MsgBox(objXML.documentElement.selectSingleNode("/html/span/xml/rs:data
").nodeName)

führt zu einem Fehler.
Wie muss die Pfadangabe modifiziert werden (vermutlich muss das prefix "rs:"
weg)
damit die Navigation funktioniert?

Grüße

Manfred
 

Lesen sie die antworten

#1 Manfred
29/03/2008 - 12:56 | Warnen spam
Mittlerweile habe herausgefunden , wie es gemacht werden kann.
Es lag an den Namespaces.


'Daten laden
Dim doc As XmlDocument = New XmlDocument()
doc.Load("V:\artikellngTab[1].txt")

'Create an XmlNamespaceManager for resolving namespaces.
Dim nsmgr As XmlNamespaceManager = New
XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("rs", "urn:schemas-microsoft-com:rowset")

Dim Rootbook As XmlNode
Dim page As XmlNode

Rootbook =
doc.DocumentElement.SelectSingleNode("/html/span/xml/rs:data", nsmgr)
MsgBox("test Node :" & Rootbook.Name)
page = Rootbook
MsgBox("test Node :" &
page.ChildNodes.Item(1).Attributes.GetNamedItem("ARTIKEL").Value)





"Manfred" wrote:

Hallo Leute,

ich möchte auf folgende Struktur zugreifen:

<html>
<span id='TData'>
<xml>
<s:Schema id='RowsetSchema'
xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'>

<s:ElementType name='row' content='eltOnly'>
<s:AttributeType name='ID'><s:datatype dt:type='int'
rs:maybenull='false' /></s:AttributeType>
<s:AttributeType name='ARTIKEL'><s:datatype dt:type='string'
dt:maxLength='22' rs:maybenull='false' /></s:AttributeType>
<s:AttributeType name='NAME'><s:datatype dt:type='string'
dt:maxLength='63' /></s:AttributeType>
<s:AttributeType name='SPRACHE'><s:datatype dt:type='string'
dt:maxLength='15' rs:maybenull='false' /></s:AttributeType>
<s:extends type='rs:rowbase'/>
</s:ElementType>
</s:Schema>
<rs:data
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<z:row ID="3545" ARTIKEL="1901" NAME="Vite a pressione" SPRACHE="it" />
<z:row ID="3544" ARTIKEL="1901" NAME="Placa de Apoio" SPRACHE="PT" />
</rs:data>
</xml>
</span>
</html>

Ich habe dabei folgende Frage zu XPath:

Bis zum Knoten xml funktieoniert auch alles:

MsgBox(objXML.documentElement.selectSingleNode("/html/span/xml").nodeName)


Danach kann ich zwar feststellen, das die Childs "s:Schema " und "rs:data "
heißen,
aber der Gang zum nàchsten Knoten

MsgBox(objXML.documentElement.selectSingleNode("/html/span/xml/rs:data
").nodeName)

führt zu einem Fehler.
Wie muss die Pfadangabe modifiziert werden (vermutlich muss das prefix "rs:"
weg)
damit die Navigation funktioniert?

Grüße

Manfred



Ähnliche fragen