我一直在尝试使用HTML Agility Pack将HTML解析为有效的XHTML,以进入更大的XML文件。这在大多数情况下都有用,但是列表的格式如下:
<ul>
<li>item1
<li>item2
</li></li>
</ul>
与我的期望相反:
<ul>
<li>item1</li>
<li>item2</li>
</ul>
不幸的是,这种带有嵌套li标签的格式无法通过我无法控制的架构验证。有没有人知道通过HTML Agility Pack或其他方法来纠正这个问题的简单方法。最好是在.NET中。
答案 0 :(得分:1)
我找到了一个名为HTML Tidy http://tidy.sourceforge.net/的敏捷包的替代品。我实际上使用了名为Tidy.NET http://sourceforge.net/projects/tidynet/的.NET端口,这似乎解决了我的问题。
答案 1 :(得分:0)
我也在其他网站上发现了你的问题。您要解析的HTML是:
<UL>
<LI>NVQ Level 3 in Fabrication and Welding Engineering
<LI>Level 3 Certificate in Engineering
<LI>Level 2 Key Skill in Application of Number
<LI>Level 2 Key Skill in Communication
<LI>Level 2 Key Skill in Information Technology
<LI>Level 2 Key Skill in Working with Others
<LI>Level 2 Key Skill in Improving Own Learning & Performance</LI></UL>
我注意到第一个<li>
是另一个<li>'s
的父级。
我要采取的一个方法是采用第一个<li>
和文本(它是HAP的TextNode),保存其他<li>
子项并删除子项,插入它们(在格式化时)父节点。
您可能必须采用递归方式。以下是我对HTML Sanitizer类的解决方案:HTML Agility Pack strip tags NOT IN whitelist
答案 2 :(得分:-1)
HtmlNode ul = _sourceForm.SelectSingleNode("//ul");
HtmlNodeCollection childList = ul.ChildNodes;
然后,您可以遍历子列表以获取您感兴趣的文本元素。