私は文書のいくつかの不正を扱っていますが、主に特定のノードが存在し、他のいくつかの時間は、そこにはありません。私は両方の状況を考慮に入れることができるxpathが欲しい。ノードが存在しない場合のxpath式?
たとえば、私の文書では、スパンが存在する場合と存在しない場合があります。
/html/body/span/div/table/tr/td/a
/html/body/div/table/tr/td/a
上記の両方のケースに一致するxpathはどのように表現できますか?
私は文書のいくつかの不正を扱っていますが、主に特定のノードが存在し、他のいくつかの時間は、そこにはありません。私は両方の状況を考慮に入れることができるxpathが欲しい。ノードが存在しない場合のxpath式?
たとえば、私の文書では、スパンが存在する場合と存在しない場合があります。
/html/body/span/div/table/tr/td/a
/html/body/div/table/tr/td/a
上記の両方のケースに一致するxpathはどのように表現できますか?
//
セレクタは任意の深さを検索します。これは、(それはまた、本体とスパン以外のタグの内側のdivを見つけるでしょう)スパンの有無にかかわらず動作します:
/html/body//div/table/tr/td/a
あなたが組合に|
演算子を使用して一緒に2つの結果セットに参加することができます。
/html/body/span/div/table/tr/td/a |
/html/body/div/table/tr/td/a
いくつかのクレイジーフィルタリングを使用して、すべてを1つのパスで実行することができます。テストされていない:
/html/body/descendant-or-self::*[self::body or self::span/parent::body]/div/table/tr/td/a
クレイジーフィルタリングでは、ボディとスパンの両方を選択するようですそれが存在するとき)。それは選択スパンだけにすることは可能ですか?スパンが存在しない場合は、必要に応じてボディを選択します。 – heymona
私はこの種の質問が理解できません...「/ html // a」も両方の場合に 'a'要素を選択することに注意してください。 –
はい、 '//'は単にページ上のすべてのリンクを返しますが、上記のようにいくつかの構造に「大雑把に」従っているリンクがあります.... – heymona