XMLへのHTMLアジャイルパックの変換<script> corruption

c# html-agility-pack linq-to-xml

質問

私はそこに<script>持つHTMLファイルを持っています:

<html>
   <script type="application/custom+xml">
   <my><xml><goes><here/></goes></xml></my>
   </script>
</html>

私はHTML Agility Packでそれを解析し、それをXMLに変換します。

<html>
   <script type="application/custom+xml">
   <my><xml><goes><here/></goes></xml></my>
   </script>
</html>

次に、LINQ-to-XMLを使用して、XMLをCDATAとして含むscriptタグの内容を調べたいとします。しかし、HTML Agility Packはそれを何とかしなくて、私はこのエスケープされたXMLで終わります:

<html>
   <script type="application/custom+xml">
   <my><xml><goes><here/></goes></xml></my>
   </script>
</html>

誰かが、HTMLアジリティパックにscriptタグの内容をエスケープしないように指示する方法を知っていますか?

受け入れられた回答

これはむしろ簡単です。デフォルトでは、AgilityPackはスクリプトタグのコンテンツをCDataとして扱うように設定されています。これはHtmlNodeクラスの静的コンストラクタで行われます。

ElementsFlags.Add("script", HtmlElementFlag.CData);

これを変更するには、AgilityPackを変更する必要はありません。コードの前に1つ必要です

ElementsFlags.Add("script", HtmlElementFlag.CData);

それは私のために働くように、あなたのコードの前にそれを追加してください。




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