2017-11-09 9 views
0

Ich versuche, Knoten mit <EventID>1</EventID> aufzulisten Aber ich erhalte einen Fehler Es erwartet einen Nodetest.Wie bekomme ich die Knotenliste?

Ich habe den folgenden Code, aber wenn ich laufe es mir folgende Fehlermeldung erhalten:

error image

Kann jemand erklären, was ich falsch mache?

dim xml,node,nodes,Root,strNames 
'Set xml = CreateObject("Microsoft.XMLDOM") 
Set xml = CreateObject("MSXML2.DOMDocument.6.0") 
xml.Async = False 
xml.Load "C:\Test\Week\cr_history.txt" 
xml.setProperty "SelectionLanguage","XPath" 


For Each Node in xml.selectnodes("//DS001History/[@EventID='1']") 
    strNames=Node.name 
Next 
msgbox strNames 
+1

Wo ist dein xml? Welche Knoten möchten Sie abrufen? Wie erwarten Sie ohne diese Informationen, dass andere Ihnen helfen? – Gurman

+0

Bitte poste deine XML oder du bekommst keine Hilfe –

Antwort

0

Sie benötigen eine XPath //DS001History/EventID[number(text())=1] zu ändern. Dadurch werden alle EventIDs mit einem Wert von 1 unter DS001History abgerufen. Beachten Sie, dass ich auch number() verwendet habe, um sicherzustellen, dass nur numerische Werte übereinstimmen. Sie können auch //DS001History/EventID[text()=1] oder //DS001History/EventID[text()='1'] verwenden.

Wenn Sie ALLE EventIDs mit dem Wert 1 abrufen möchten, können Sie einfach //EventID[text()=1] verwenden. Es ist nicht erforderlich, den Pfad des übergeordneten Elements in der xpath-Abfrage anzugeben.

Versuchen Sie, den folgenden Code

dim xml,node,nodes,Root,strNames 
Set xml = CreateObject("MSXML2.DOMDocument.6.0") 
xml.Async = False 
xml.Load "C:\Users\pankaj.jaju\Desktop\test.xml" 
xml.setProperty "SelectionLanguage","XPath" 

strNames = "" 
For Each Node in xml.selectnodes("//DS001History/EventID[number(text())=1]") 
    strNames = strNames & Node.tagname 
Next 
msgbox strNames 
Verwandte Themen