子の子の値に基づいて要素を選択するXPath


208

いずれかの子の子の値に基づいて要素を選択しようとしています

次のことを考えても機能しない、助けてくれてありがとう、ありがとう

./book[/author/name = 'John'] または

./book[/author/name text() = 'John']

著者名が「John」であるすべての本が欲しい

Xmlファイル

<list>
   <book>
      <author>
         <name>John</name>
         <number>4324234</number>
      </author>
      <title>New Book</title>
      <isbn>dsdaassda</isbn>
   </book>
   <book>...</book>
   <book>...</book>
</list>

回答:


300

ほとんどあります。述語では、相対パスが必要なので、変更します

./book[/author/name = 'John'] 

どちらかに

./book[author/name = 'John'] 

または

./book[./author/name = 'John'] 

そしてあなたはあなたの要素と一致します。現在の述語は、ドキュメントのルートに戻ってを探しますauthor


1
なければ.私のために動作しませんでした(必要な./author/name
MichaelChirico

この構文を関数で使用することは可能ですか?たとえば、次のようなものを実装する方法は./book[contains(author/name, "John")]
学習者のみ

1
@OgrishMan新しい質問はNew Questionに入力する必要がありますが、その前に私はそれを試してみます!ちなみに、xpathの文字列リテラルに'は、通常、二重引用符ではなく一重引用符が必要です"
AakashM 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.