私は以下の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>
Id = "4"のEmployee要素を選択したいです。
私は何も返していないXPath式の下で使用しています。
//Employee/[@id='4']/text()
私は http://chris.photobooks.com/xml/default.htm でそれをチェックしました、そしてそれは無効なxpathを言います、問題がどこにあるかわからない。
/
の前に[
を削除する必要があります。述語([
]
の部分)の直前にスラッシュを入れないでください。また、Employee要素自体を選択するには、最後に/text()
を付けないようにするか、そうでなければEmployee要素のすぐ下にある空白のテキスト値を選択します。
//Employee[@id='4']
編集:Jensがコメントで指摘しているように、//
はドキュメント全体で一致するノードを検索するので非常に遅くなります。作業中の文書の構造が一貫している場合は、フルパスを使用することをお勧めします。次に例を示します。
/Employees/Employee[@id='4']
これをやってみてください。
/Employees/Employee[@id=4]/*/text()
続いて、次のように「特定の属性を持つすべてのノード」を選択できます。
//*[@id='4']