2011-01-05 11 views
0

私は文書のいくつかの不正を扱っていますが、主に特定のノードが存在し、他のいくつかの時間は、そこにはありません。私は両方の状況を考慮に入れることができるxpathが欲しい。ノードが存在しない場合のxpath式?

たとえば、私の文書では、スパンが存在する場合と存在しない場合があります。

/html/body/span/div/table/tr/td/a 
/html/body/div/table/tr/td/a 

上記の両方のケースに一致するxpathはどのように表現できますか?

+0

私はこの種の質問が理解できません...「/ html // a」も両方の場合に 'a'要素を選択することに注意してください。 –

+0

はい、 '//'は単にページ上のすべてのリンクを返しますが、上記のようにいくつかの構造に「大雑把に」従っているリンクがあります.... – heymona

答えて

1

//セレクタは任意の深さを検索します。これは、(それはまた、本体とスパン以外のタグの内側の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 
+0

クレイジーフィルタリングでは、ボディとスパンの両方を選択するようですそれが存在するとき)。それは選択スパンだけにすることは可能ですか?スパンが存在しない場合は、必要に応じてボディを選択します。 – heymona

関連する問題