1. ホーム
  2. xml

[解決済み] ある要素のn番目のインスタンスを取得するためのXPathクエリ

2022-04-25 10:33:07

質問

あるHTMLファイル(そのコンテンツは私が管理していない)に、いくつかの input 要素に、すべて同じ固定の id 属性は "search_query" . ファイルの内容は変わる可能性がありますが、私は常に、2番目の input 要素に id 属性 "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 コードは全く異なる可能性があることに留意してください。 input 要素は、一貫性のない文書構造でどこにでも現れることができます(ただし、少なくとも2つの input 要素で、id属性が "search_query" ).

正しいXPath表現は何ですか?

どのように解決するのですか?

これはFAQです :

//somexpression[$N]

で選択されたすべてのノードを検索することを意味します。 //somexpression は、その $N の子である。

あなたが欲しいのは :

(//input[@id="search_query"])[2]

リメンバー : その [] 演算子よりも優先順位が高いです。 // の省略形です。