XPathは "Not"です。特定のタグを持つブランチを無視する

html-agility-pack xpath

質問

私はHTMLアジリティパックにWebページをロードし、DOMを持っています。私はXPathを使ってページのすべてのテキストを取り出す(ただし、 <script>タグ内にあるjavascriptは使用しない)。

私はそれが<script>を持つブランチ内のタグを無視するために、// text()と 'not'が必要であることを示しています。

私が試してみました

doc.DocumentNode.SelectNodes("//text()[not(self::script)]"))

そして

doc.DocumentNode.SelectNodes("//text()[not(self::script)]"))

いずれも動作しません。返されるノードのXPathプロパティの例は次のとおりです(スクリプトに気づく)

doc.DocumentNode.SelectNodes("//text()[not(self::script)]"))

私はこれらの投稿の両方と相談しました。

XPathで 'not'のマッチングを行うことは可能ですか?

Html Agility Packを使用してHTMLからすべてのテキストを取得 (これは良い投稿ですが、JSを引き出します)

助言がありますか?

受け入れられた回答

最初の試行ではスクリプト要素であるすべてのテキストノードが拒否され、2番目のスクリプトノードではスクリプトノードの子ノードを持つすべてのテキストノードが拒否されます。もちろん、どちらの場合でも、条件は決して真ではありません。

あなたはあなたの要件をはっきりと説明していませんが、スクリプト要素を親として持つすべてのテキストノードを拒否したいと思います

//text()[not(parent::script)]

または

//text()[not(parent::script)]



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ