---
title: "Nybörjarfråga om XPath, VB och noder"
type: "forum-thread"
url: "https://www.webforum.nu/amne/xml/168160-nybörjarfråga-om-xpath-vb-och-noder"
topic: "XML"
topic_url: "https://www.webforum.nu/amne/xml"
author: "Troxy"
published: "2008-01-16T13:57:34.000Z"
updated: "2008-02-01T11:56:25.000Z"
replies: 1
views: 558
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/xml/168160-nybörjarfråga-om-xpath-vb-och-noder"
---

# Nybörjarfråga om XPath, VB och noder

## #1 — Troxy, 2008-01-16T13:57Z

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.

Permalänk: https://www.webforum.nu/p/168160

## #2 — Davlid, 2008-02-01T11:56Z

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
```

Permalänk: https://www.webforum.nu/p/2076898

---

Tråden på webben: https://www.webforum.nu/amne/xml/168160-nybörjarfråga-om-xpath-vb-och-noder
