【问题标题】:Is there a way that I can check the syntax of HTML with C#有没有办法可以用 C# 检查 HTML 的语法
【发布时间】:2012-11-24 08:29:37
【问题描述】:

我有一个编辑窗口,允许我的授权用户输入 HTML,然后在他们单击提交后将其存储在数据库中。不幸的是,它是这样的:

<ul class="controls-buttons">
         <li class="sep"></li>
     <li id="home">
<a title="Home" <a="" data-href="x">xx</a></li>
      </ul>

有没有一种方法可以在将 HTML 字符串存储到数据库之前检查它以确保它是有效的 HTML 标记?例如这里注意&lt;a&lt;a的使用

【问题讨论】:

    标签: c# html xml html-parsing


    【解决方案1】:

    您可以将片段加载到HTML Agility Pack(HTML 解析器)中。源代码下载包含许多显示用法的示例项目。

    检查ParseErrors 属性以查看片段是否有效。

    【讨论】:

    • 谢谢,但我想知道这是否超出了我的需要。另外我担心它不是微软支持的库。我看到的一些 cmets 表明人们遇到了问题。是否有其他方式使用 Microsoft 库。我真正需要做的就是检查所有标签是否匹配。并且用户没有输入我的示例中的内容。
    • @Anne - 如果你想解析 HTML,这是最好的工具之一。它被广泛使用。不知道这不是来自微软的担忧是什么——它们不是软件的全部和终结。关于匹配标签 - 这仍然是 HTML 的一个很好的解决方案。
    • 我会对此进行更多研究。谢谢
    【解决方案2】:

    您的下一个最佳方法是将 C# 和 .NET 与 Regex 对象一起使用。只需使用符合您要求的正则表达式并根据您的正则表达式验证内容。

    【讨论】:

    • 老实说这听起来几乎是不可能的:-(
    • 您真的需要阅读 this 了解为什么正则表达式适合验证未知的 HTML。
    • 虽然要求正则表达式解析任意 HTML 确实就像要求 Paris Hilton 编写操作系统一样,但有时解析有限的已知 HTML 集是合适的。如果您有一小部分 HTML 页面,您希望从中抓取数据然后将其填充到数据库中,那么正则表达式可能会正常工作。鉴于安妮的情况,这可能是合适的。由于 HTML 似乎有些为人所知。
    • 我对这种情况的理解是用户可以输入任意HTML。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    相关资源
    最近更新 更多