このようなマークアップを持つ:
<div class="foo">
<div><span class="a1"></span><a href="...">...</a></div>
<div><span class="a2"></span><a href="...">...</a></div>
<div><span class="a1"></span>some text</div>
<div><span class="a3"></span>some text</div>
</div>
隣接するクラスの場合にのみ<a>
、すべてを取得することに興味があります。したがって、コード全体の最後で、私の結果は1番目と3番目の結果になるはずです。中にあるか、属性があるとしたら簡単ですが、運がありません。some text
span
a1
<a>
div
some text
<a>
some text
span
div
class
私が今していることはspan
、a1
クラスで探すことです:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]
次に、その親を取得し、その親query()
をコンテキストノードとして別の操作を行います。これは単に効率的とはほど遠いように見えるので、問題は明らかに私の目標を達成するためのより良い方法があるかどうかです。
回答の補遺
@MarcBが受け入れた回答によると、使用する正しいクエリは次のとおりです。
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/..
しかし、<a>
それを使用する方が良いかもしれません:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/../a
<a>
コンテナの代わりに取得します。