webForumDet fria alternativet

Nybörjarfråga om XPath, VB och noder

XMLur XML

1 svar · 541 visningar · startad av Troxy

TroxyMedlem sedan mars 20041 505 inlägg
#1

Hej, jag har precis testat använda XPath tillsammans med MSXML2 och VB.
Stämmer det att man alltid får tillbaka allting som noder med XPath?
Eller skiljer det sig beroende på vilken XML-parser man använder?

Vi tar detta simpla dokument:

<?xml version="1.0"?>
<root>
  <foo>
    <bar test="123" />
  </foo>
</root>

Då vill jag hämta taggen bar med XPath såhär:

XmlDoc.selectSingleNode("/root/foo/bar")

Jag får då tillbaka en XMLDOMNode av typen 1, alltså ett element.
Men jag kan inte använda getAttribute("test") på en nod.
Hur gör jag om noden till ett element?

Tacksam för svar.

DavlidMedlem sedan okt. 200725 inlägg
#2

Hm, nu var det länge sedan jag satt med VB - och jag antar att det inte är .net eftersom du nämner MSXML2 och inte System.Xml.

Så, fritt ur minnet så tror jag att det går bra att hämta ett XmlElement direkt från selectSingleNode på nedanstående vis. Ett XmlElement är ju en XmlNode, och jag tror att man castar den automatiskt om man definierar objektet som en MSXML2.IXMLDOMElement.

    Dim XmlDoc As New MSXML2.DOMDocument40
    Dim XmlElement As MSXML2.IXMLDOMElement
    
    XmlDoc.loadXML "<?xml version=""1.0""?><root>  <foo>    <bar test=""123"" />  </foo></root>"
    
    Set XmlElement = XmlDoc.selectSingleNode("/root/foo/bar")
    MsgBox XmlElement.getAttribute("test")

Är det vbscript ska det gå att göra såhär:

Set xmlSource = CreateObject("MSXML2.DOMDocument")
xmlSource.loadXML "<?xml version=""1.0""?><root>  <foo>    <bar test=""123"" />  </foo></root>"
Set Node = xmlSource.selectSingleNode("/root/foo/bar")
MsgBox Node.getAttribute("test")

Alternativt kan du ju hämta ut själva attributen - som ju är en XmlNode den också - direkt med Xpath:

    Set XmlNode = XmlDoc.selectSingleNode("/root/foo/bar/@test")
    MsgBox XmlNode.nodeValue
126 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)