Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u XPath gebruikt om een query uit te voeren op een door de gebruiker gedefinieerde standaardnaamruimte en code biedt om het gedrag te reproduceren.
Oorspronkelijke productversie: Visual Basic
Oorspronkelijk KB-nummer: 288147
Symptomen
Wanneer u de standaardnaamruimte in het XML-document opnieuw definieert, wijzigt u de interne SelectionNamespaces
eigenschap voor de standaardnaamruimte en probeert u vervolgens XPath programmatisch te gebruiken om knooppunten te retourneren met behulp van de selectNodes
of selectSingleNodes
methode, worden er geen knooppunten geretourneerd.
Resolutie
Gebruik voorvoegsels met de naamruimten wanneer u de SelectionNamespaces
eigenschap opgeeft of gebruik XSL-patroonkoppelingsbewerkingen (Extensible Stylesheet Language) in plaats van XPath.
Meer informatie
Dit is zo ontworpen.
Voor de implementatie van XPath-query's op basis van domdocument moeten naamruimten worden gedeclareerd in het Document Object Model (DOM) voordat de selectNodes
of selectSingleNode
methoden worden uitgevoerd.
Stappen voor het reproduceren van het gedrag
Maak in Visual Basic een nieuw Standard EXE-project. Form1 wordt standaard gemaakt.
Plak de volgende code in de
Form_Unload()
gebeurtenis Form1.' You can change the ProgID to reflect the installed version of the Microsoft XML Parser: ' For example, with MSXML 6, you would use: ' Dim xmlDom As MSXML2.DOMDocument60 Dim xmlDom As MSXML2.DOMDocument Dim nodeList As MSXML2.IXMLDOMNodeList Dim iNode As MSXML2.IXMLDOMNode ' For example, with MSXML 6, you would use: ' Set xmlDom = New MSXML2.DOMDocument60 Set xmlDom = New MSXML2.DOMDocument With xmlDom .async = False .loadXML "<?xml version='1.0'?>" & _ "<Root xmlns='uri:MyNameSpace'>" & _ " <Test>This is a Test</Test>" & _ "</Root>" .setProperty "SelectionLanguage", "XPath" .setProperty "SelectionNamespaces", "xmlns='uri:MyNameSpace'" Set nodeList = .selectNodes("//Test") End With For Each iNode In nodeList msgbox iNode.xml Next iNode
Klik in het menu Project op Verwijzingen. Selecteer Microsoft XML, v3.0 of hoger in de lijst met beschikbare verwijzingen.
Voer het project uit. Er wordt geen XML geretourneerd.
Commentarieer de twee
setProperty
methoden uit.Notitie
U kunt de twee coderegels ook als volgt wijzigen.
.setProperty "SelectionNamespaces", "xmlns:myNS='uri:MyNameSpace'" Set nodeList = .selectNodes("//myNS:Test")
Voer het project uit. De XML-knooppunten worden geretourneerd.
Verwijzingen
Naamruimte opgeven bij het uitvoeren van query's op de DOM met XPath