:なぜ私のXPathは混在コンテンツで動作しませんか?下記のHTMLで
<html>
<div class="row content-box">
<div class="col-xs-12 col-sm-6">
<div class="gray-separator-3">
<div class="row to-top">
<h2 class="xs-mt-0">
Who's covered?
<span class="ns-i-pencil_icon icon-flipped pensil-font"></span>
<span>
<a class="edit-font firefinder-match" href="#">Edit</a>
</span>
</h2>
<p class="xs-mt-0 xs-mb-0">David</p>
</div>
</div>
</div>
</html>
として書かれたときに '編集' リンクためのXPathはが動作していないよう:
//div[.//h2[contains(.,'Who's covered?')]]//span/a[.='Edit']
が、書かれたときに期待通りに動作するようです次のように:
//div[.//h2]//span/a[.='Edit']
012の下に子ノードがない場合は正常に動作します以下の場合のように
、私はこのようなXPathを書くとき:
//div[.//h2[contains(.,'What's covered?')]]//span/a[.='Edit']
はそれが要素を識別します。
<html>
<div class="row content-box">
<div class="col-xs-12 col-sm-6">
<div class="gray-separator-3">
<div class="row to-top">
<h2 class="xs-mt-0">
What's covered?
</h2>
<span>
<a class="edit-font firefinder-match" href="#">Edit</a>
</span>
<p class="xs-mt-0 xs-mb-0">David</p>
</div>
</div>
</div>
</html>
テキストと共にその下の子ノードを持つことが<h2>
を読まない理由はありますか?
ノードにテキストとサブツリーの両方があり、XPathを書くときにサブツリーだけがテキストであるノードがある場合、違いは何ですか?
しかし、ほとんどの場合は機能します。ロジックについて議論するのではなく、ここでは一重引用符で動作する例を示します。しかし、これはどのように私はすべての時間のすべてのオブジェクトIDを書いている。 http://i66.tinypic.com/2ryod3s.jpg –
申し訳ありませんが、誤った形式のXPathが「うまくいく」と誰かに納得させるには、完全な** [mcve] **を提供する必要があります。 XPathパーサの観点から見てみましょう: '' Who'の後に '' 'が出現すると、' contains() 'の最初の引数として構築されている文字列を閉じます。あなたは 's'に遭遇し、「ああ、ここにいるはずがない」と言う。 – kjhughes
一重引用符の中に一重引用符があるときに完全な意味がありました。ありがとうございました。 これは、一重引用符を二重に変更したときに機能しました。 –