2012-02-28 21 views
2

私はHTMLアジリティパックにWebページをロードし、DOMを持っています。私はXPATHを使用して、ページ上のすべてのテキストを取り出す(ただし、<script>タグ内にあるjavascriptは使用しません)。XPath "Not"。特定のタグを持つブランチを無視する

私は文字列(//)が必要で、ブランチ内の<script>のタグを無視するには 'not'が必要です。

私は

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

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

どちらも仕事をしようとしています。返されるノードのXPathプロパティの例は(スクリプトに気づく)

/html[1]/body[1]/div[2]/div[4]/div[1]/div[1]/div[1]/div[3]/script[1]/#text[1] 

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

Is it possible to do 'not' matching in XPath?

Grab all text from html with Html Agility Pack(これは良い記事ですが、それはJSを引き出し)

任意の提案ですか?

答えて

2

スクリプト・エレメントであるすべてのテキスト・ノードを拒否し、スクリプト・ノードの子を持つすべてのテキスト・ノードを拒否します。もちろん、どちらの場合でも、条件は決して真ではありません。

あなたは明らかにあなたの要件を説明していないが、私はあなたが彼らの親のようにスクリプト要素を持っているすべてのテキストノードを拒否したいと思い、これは働いていた

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

または

//*[not(self::script)]/text() 
+0

されるであろう..../* [not(self :: script)]/text()(もう一つは何らかの理由でしなかった)Thanks! – DJA

関連する問題