HTML Agility Pack修复
  • 清单顺序
  • .net c# html html-agility-pack

    我一直在尝试使用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中。

    一般承认的答案

    我发现了一个名为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白名单



    Related

    许可下: CC-BY-SA with attribution
    不隶属于 Stack Overflow
    许可下: CC-BY-SA with attribution
    不隶属于 Stack Overflow