input
同じ固定id
属性 を持つ複数の要素を持つ HTML ファイル (その内容を制御できません) があります。ファイルの内容は変更される可能性がありますが、 id 属性 を持つ"search_query"
2 番目の要素を常に取得する必要があることはわかっています。input
"search_query"
これを行うには XPath 式が必要です。試してみました//input[@id="search_query"][2]
が、うまくいきませんでした。このクエリが失敗した XML 文字列の例を次に示します。
<div>
<form>
<input id="search_query" />
</form>
</div>
<div>
<form>
<input id="search_query" />
</form>
</div>
<div>
<form>
<input id="search_query" />
</form>
</div>
上記は単なる例であり、他の HTML コードはまったく異なる場合があり、要素は一貫したドキュメント構造を持たずにどこにでも出現する可能性があることに注意してください(ただし、id 属性が の要素がinput
少なくとも 2 つ存在することは保証されています)。input
"search_query"
正しい XPath 式は何ですか?
ベストアンサー1
これはよくある質問です:
//somexpression[$N]
//somexpression
「親の 番目の子である、によって選択されたすべてのノードを検索する$N
」という意味です。
あなたが望むのは:
(//input[@id="search_query"])[2]
覚えて:[]
演算子は省略形よりも優先順位が高くなります//
。