2011-08-11 15 views
3

TARGETの内容に基づいて、文書内で次のHTMLを選択したいと考えています。私。 TARGETが一致する場合は、すべてを選択します。しかし、私は後に行くにはどこか分からない:id('page')/x:div/span/a='TARGET' - 含むdivを取得するには、親、子、兄弟表現を使用する方法、a前のdivこと、および2個のbrタグがdiv自己、先行ノードおよび後続ノードを選択するXPath式

<a></a> 
<div> 
    <br /> 
    <span><a>TARGET</a><a></a> 
     <span><span> 
      <a></a></span> 
      <a></a> 
      <span></span></span> 
      <span><a></a></span></span> 
</div><br /><br /> 

答えて

3

のような単一のXPathを使用します。

"//*[ 
    (self::a and following-sibling::*[1][self::div and span/a='TRAGET']) or 
    (self::div and span/a='TARGET') or 
    (self::br and preceding-sibling::*[1][self::div and span/a='TARGET']) or 
    (self::br and preceding-sibling::*[2][self::div and span/a='TARGET']) 
    ]" 

は、あなたの文書がうまく閉じられていないため、BRタグに形成されていないことに注意してください。さらに、必要に応じて追加することができる名前空間は含まれていませんでした。

+0

Hmm。これは何らかの理由で私に無効な表現エラーを与えています。 – urschrei

+1

申し訳ありませんが、ミスコードには括弧がありませんでした。今修正されました。 –

+1

完璧に働いて、どうして私は自分自身の行方を見つけられなかったのですか?ありがとう! – urschrei

1
を次

0123: - 各divのためのすべての関連要素その後

//div[span[a[text()="TARGET"]]][preceding-sibling::*[1][name()="a"]][following-sibling::*[1][name()="br"]] 

おそらく、あなたは最初の(条件が満たされる必要があるわからない)すべてのdivを見つける必要があります

関連する問題