xml tester beispiele - Extrahieren Sie den Wert des Attributsknotens über XPath
Um nur den Wert (ohne Attributnamen) zu erhalten, verwenden Sie string()
:
string( //Parent[@id='1']/Children/child/@name )
Die Funktion fn:string() gibt den Wert ihres Arguments als xs:string
. Wenn das Argument ein Attribut ist, gibt es daher den Wert des Attributs als xs:string
.
Wie kann ich den Wert eines Attributknotens über XPath extrahieren?
Eine Beispiel-XML-Datei ist:
<parents name='Parents'>
<Parent id='1' name='Parent_1'>
<Children name='Children'>
<child name='Child_2' id='2'>child2_Parent_1</child>
<child name='Child_4' id='4'>child4_Parent_1</child>
<child name='Child_1' id='3'>child1_Parent_1</child>
<child name='Child_3' id='1'>child3_Parent_1</child>
</Children>
</Parent>
<Parent id='2' name='Parent_2'>
<Children name='Children'>
<child name='Child_1' id='8'>child1_parent2</child>
<child name='Child_2' id='7'>child2_parent2</child>
<child name='Child_4' id='6'>child4_parent2</child>
<child name='Child_3' id='5'>child3_parent2</child>
</Children>
</Parent>
</parents>
Bisher habe ich diese XPath-Zeichenfolge:
//Parent[@id='1']/Children/child[@name]
Es gibt nur child
Elemente zurück, aber ich möchte den Wert des Namensattributs haben.
Für meine Beispiel-XML-Datei möchte ich folgende Ausgabe haben:
Child_2
Child_4
Child_1
Child_3
Wie oben beantwortet:
//Parent[@id='1']/Children/child/@name
gibt nur das name
Attribut der 4 child
Knoten aus, die zu dem Parent
das durch sein Prädikat [@ id = 1] angegeben wird. Sie müssen dann das Prädikat zu [@id=2]
ändern, um die Menge der Kindknoten für das nächste Parent
.
Wenn Sie den Parent
Knoten jedoch vollständig ignorieren und Folgendes verwenden:
//child/@name
Sie können das Namensattribut aller child
Knoten auf einmal auswählen.
name="Child_2"
name="Child_4"
name="Child_1"
name="Child_3"
name="Child_1"
name="Child_2"
name="Child_4"
name="Child_3"
@ryenus, Sie müssen das Ergebnis durchlaufen. So würde ich es in VBScript machen;
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
xmlDoc.setProperty "SelectionLanguage", "XPath"
xmlDoc.load("kids.xml")
'Remove the id=1 attribute on Parent to return all child names for all Parent nodes
For Each c In xmlDoc.selectNodes ("//Parent[@id='1']/Children/child/@name")
Wscript.Echo c.text
Next