1. ホーム
  2. xml

[解決済み] 属性値で要素を選択するXPath

2022-04-21 14:43:33

質問

次のような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 と表示され、Invalid xpathと表示されるため、どこに問題があるのかわかりません。

どうすればいいですか?

を削除する必要があります。 / の前に [ . 述語( [ ] のように、直前にスラッシュを付けないようにします。 また、Employee 要素そのものを選択する場合は /text() を指定しないと、Employee 要素の直下にある空白のテキスト値が選択されるだけです。

//Employee[@id='4']

編集する コメントでJensが指摘しているように // は、マッチするノードを探すためにドキュメント全体を検索するため、非常に遅くなることがあります。もし、扱う文書の構造が一貫しているのであれば、フルパスなどを使用した方がよいでしょう。

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