wake-up-neo.net

XPath zum Auswählen von Element nach Attributwert

Ich habe folgendes XML.

<?xml version="1.0" encoding="UTF-8"?>
<Employees>
    <Employee id="3">
        <age>40</age>
        <name>Tom</name>
        <gender>Male</gender>
        <role>Manager</role>
    </Employee>
    <Employee id="4">
        <age>25</age>
        <name>Meghna</name>
        <gender>Female</gender>
        <role>Manager</role>
    </Employee>
</Employees>

Ich möchte Employee Element mit id = "4" auswählen.

Ich verwende unter XPath-Ausdruck, der nichts zurückgibt.

//Employee/[@id='4']/text()

Ich habe es unter http://chris.photobooks.com/xml/default.htm überprüft und es wird ein ungültiger xpath angezeigt.

164
Pankaj

Sie müssen den / vor dem [ entfernen. Prädikate (die Teile in []) sollten nicht unmittelbar vor ihnen einen Schrägstrich haben. Um das Employee-Element selbst auszuwählen, müssen Sie die /text() am Ende weglassen, oder Sie wählen einfach die Whitespace-Textwerte direkt unter dem Employee-Element aus.

//Employee[@id='4']

Bearbeiten: Wie Jens in den Kommentaren darauf hinweist, kann // sehr langsam sein, da das gesamte Dokument nach übereinstimmenden Knoten durchsucht wird. Wenn die Struktur der Dokumente, mit denen Sie arbeiten, konsistent ist, können Sie am besten einen vollständigen Pfad verwenden, beispielsweise:

/Employees/Employee[@id='4']
240
JLRishe

Versuchen Sie folgendes:

/Employees/Employee[@id=4]/*/text()
10
Gilles Quenot

Als Folge können Sie "alle Knoten mit einem bestimmten Attribut" wie folgt auswählen:

//*[@id='4']

1
rogerdpack