2013-01-04 27 views
0

我有一個HTML文件中有一個<script>HTML敏捷性包轉換爲XML <script>腐敗

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

我與HTML敏捷性包解析,然後將其轉換爲XML。

HtmlDocument html; 
html.OptionOutputAsXml = true; 
html.Save(stream); 
... 
XDocument xml = XDocument.Load(stream); 

然後我想使用LINQ到XML看script標籤,它應該包含我的XML作爲CDATA的內容。但是HTML敏捷性包弄亂它在某種程度上,我結束了這個轉義XML:

<html> 
<script type="application/custom+xml"> 
//<![CDATA[ 
&lt;my&gt;&lt;xml&gt;&lt;goes&gt;&lt;here/&gt;&lt;/goes&gt;&lt;/xml&gt;&lt;/my&gt; 
//]]>// 
</script> 
</html> 

有誰知道我怎麼能告訴HTML敏捷性包不逃避script標籤的內容是什麼?

回答

4

那是相當容易的,默認情況下AgilityPack設置爲治療腳本標籤內容爲CDATA,這是在HtmlNode類的靜態構造函數中完成,像這樣:

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

要改變這一不必須修改AgilityPack,所有需要的是你的代碼之前一兩件事,或者只是一旦當你的程序啓動

HtmlNode.ElementsFlags.Remove("script"); 

只需將您的代碼之前添加,這樣說,這對我的作品。