複数の条件を持つXPath


156

名前属性が指定されたカテゴリと、値が指定された子ノードの作成者を選択するためにどのXPathを使用できますか。

以下のパスのさまざまなバリエーションを試しましたが、成功しませんでした。

//quotes/category[@name='Sport' and author="James Small"]

XML:

<?xml version="1.0" encoding="utf-8"?>
<quotes>
  <category name="Sport">
   <author>James Small<quote date="09/02/1985">Quote One</quote><quote             date="11/02/1925">Quote nine</quote></author>
  </category>
   <category name="Music">
   <author>Stephen Swann
 <quote date="04/08/1972">Quote eleven</quote></author>
  </category>
  </quotes>

回答:


248

試してください:
//category[@name='Sport' and ./author/text()='James Small']


4
フォロワーの場合、エラーメッセージ「予想されました」が見つかりました:&&は、「&&の代わりにandキーワードを使用する」を意味します(この回答で指定されているとおり)
rogerdpack

31

使用

/category[@name='Sport' and author/text()[1]='James Small']

または使用:

/category[@name='Sport' and author[starts-with(.,'James Small')]]

//評価は通常非常に遅くなる可能性があるため、疑似演算子は可能な限り使用しないようにすることをお勧めします。

また:

./somename

以下と同等です。

somename

したがって、後者を使用することをお勧めします。


14

質問は明確ではありませんが、名前属性があり、値が指定された子の作成者が必要なカテゴリを選択する必要があることを理解しています。摩耗している場合は修正してください

ここにxpathがあります

//category[@name='Required value'][./author[contains(.,'Required value')]]
e.g
//category[@name='Sport'][./author[contains(.,'James Small')]]

1

and、またはを使用して、xpathに複数の条件を適用できます。

//input[@class='_2zrpKA _1dBPDZ' and @type='text']

//input[@class='_2zrpKA _1dBPDZ' or @type='text']

-1

ここでも、このようにできます。

//category [@name='category name']/author[contains(text(),'authorname')]

または

//category [@name='category name']//author[contains(text(),'authorname')]

XPATHについて詳しく学ぶには、selenium xpathに詳細にアクセスしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.