220

私は次の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と表示されていますが、どこに問題があるのか​​わかりません。

4

3 に答える 3

319

/の前にを削除する必要があり[ます。述語(の部分[ ])の直前にスラッシュを付けないでください。また、Employee要素自体を選択するに/text()は、最後のを省略してください。そうしないと、Employee要素のすぐ下にある空白のテキスト値を選択するだけになります。

//Employee[@id='4']

編集:イェンスがコメントで指摘しているように、//一致するノードをドキュメント全体で検索するため、非常に遅くなる可能性があります。使用しているドキュメントの構造に一貫性がある場合は、次のようにフルパスを使用することをお勧めします。

/Employees/Employee[@id='4']
于 2013-01-09T23:06:59.837 に答える
19

続いて、次のように「特定の属性を持つすべてのノード」を選択できます。

//*[@id='4']
于 2019-02-07T15:54:18.490 に答える
12

これを試してみてください:

/Employees/Employee[@id=4]/*/text()
于 2013-01-09T23:09:04.017 に答える