0

文字列にhtmlタグのouterHTMLがあり、bodyタグの内側のHTMLを抽出したいと思います。この関数はC#で使用されるため、RegEx Asp.net C#を使用して(文字列から)BODY htmlタグ内のすべてを取得する方法と同様に、HTML /JavaScriptDom機能にアクセスできません。

LoadHtml変換を実行するときに発生するHTMLドキュメントの違いのため、HTMLアジリティルートは機能しません。元のHTML本文とライブサイトで更新されるHTML本文の違いをキャプチャします。これらの違いを元の本文innerHTMLと比較してほしい。HTMLのouterHTMLからbodyinnerHTMLを抽出したい理由は、データ転送のスペースを確保するためです(それぞれの送信ではなく、html、head、bodyの1つの送信)。

理想的には、これはbodyタグの属性など、あらゆるエッジケースを処理します。無効なhtmlはbodyタグなどです。

4

2 に答える 2

0

var matches = outerHTML.match(
  /<body(?:\s+[a-z]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)))*\s*>([\S\s]*)<\/body>/i);

matches[1]要素のコンテンツが含まれます(これは、 HTML5 WDbodyの解析ルールの実装です)。

ただし、bodyHTMLドキュメントには1つしか存在できないため、この要素は特殊なケースです。したがって、正規表現が貪欲であるかどうかは問題ではありません。一般に、代わりにマークアップパーサーを使用することをお勧めします。

于 2012-06-29T00:27:07.377 に答える
0

LoadHtml 変換を行う際に発生する HTML ドキュメントの違いにより、HTML Agility ルートは機能しません。

したがって、元のバージョンと新しいバージョンの両方を同じプロセスでロードしてから、それらを比較します。

タグの大文字と小文字、引用符、属性の順序など、infoset 以外の詳細が失われます。しかし、innerHTML(またはouterHTML) は、プロパティを読み取るときに DOM infoset からブラウザーによって再生成されるため、とにかくそれを失ってしまいました。入力した元の HTML ではないことは明らかです。

于 2012-06-28T23:51:14.350 に答える