HTML Agility Pack修復<li>清單順序

.net c# html html-agility-pack

我一直在嘗試使用HTML Agility Pack將HTML解析為有效的XHTML,以便進入更大的XML文件。這在大多數情況下工作,但列表格式如下:

<ul>
    <li>item1
    <li>item2
    </li></li>
</ul>

與我期望的相反:

<ul>
    <li>item1
    <li>item2
    </li></li>
</ul>

不幸的是,這種帶有嵌套li標籤的格式不能通過我無法控制的模式驗證。有沒有人知道通過HTML Agility Pack或其他方法來糾正這個問題的簡單方法。最好是在.NET中。

一般承認的答案

我找到了一個名為HTML Tidy的敏捷包的替代品http://tidy.sourceforge.net/我實際上使用了名為Tidy.NET的.NET端口http://sourceforge.net/projects/tidynet/這似乎解決了我的問題。


熱門答案

我也在其他網站上找到了你的問題。您要解析的HTML是:

<UL>
<LI>NVQ Level 3 in Fabrication and Welding Engineering
<LI>Level 3 Certificate in Engineering
<LI>Level&nbsp;2 Key Skill in Application of Number
<LI>Level&nbsp;2 Key Skill in Communication
<LI>Level&nbsp;2 Key Skill in Information Technology
<LI>Level 2 Key Skill in Working with Others
<LI>Level 2 Key Skill in Improving Own Learning &amp; Performance</LI></UL>

我注意到第一個<li>是其他<li>'s父級。我要採取的一個方法是採用第一個<li>和文本(它是HAP的TextNode),保存其他<li>子項並刪除子項,在父節點之後插入它們(在格式化時)。
您可能必須採用遞歸方式。以下是我對HTML Sanitizer類的解決方案: HTML Agility Pack strip標籤NOT IN白名單




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因