用于将html标记转换为有效XML的脚本

时间:2011-02-18 04:10:18

标签: .net xml xhtml html-parsing wysiwyg

我有一个WYSIWYG编辑器,用于构建HTML内容。标签并不总是构建为有效的xml,我需要它是有效的xml。有人有这样的剧本吗?我该怎么做?

4 个答案:

答案 0 :(得分:4)

我不确定您在服务器上使用的是哪种语言,但如果您使用的是.NET,则可能需要查看Html Agility Pack

答案 1 :(得分:2)

看看HTML Tidy的这个.NET版本可能是值得的:Tidy.NET

答案 2 :(得分:1)

有许多工具,例如John Cowan的TagSoup,可以很好地将HTML转换为XML。

答案 3 :(得分:1)

Microsoft发布了一个代码示例:SgmlReader。它允许你阅读(以及其他格式)整洁的HTML。

我写了一个小的实用工具方法,将Html字符串转换为xml字符串:

/// <summary>
/// Converts a string from potential dirty HTML to valid XML
/// </summary>
/// <param name="input">The string to convert</param>
/// <returns>A valid XML fragment that contains the cleaned HTML</returns>
/// <remarks>This methods only format the html to an xml compatible parser.
/// The method does not clean dangerous tags from the source string</remarks>
public static string HtmlToXHtml(string input)
{
    using (var sr = new StringReader(input))
    {
        var hr = new SgmlReader(sr);
                    hr.InputStream = sr;
                    hr.DocType = "HTML";
        var output = new StringBuilder();
        var hw = new XmlTextWriter(new StringWriter(output));

        hr.Read();
        while (!hr.EOF)
        {
            hw.WriteNode(hr, true);
        }


        return output.ToString();
    }
}

您可以在回发后“简单地”更新用户输入。 在更复杂的场景中(必须在wysiwyg和Html源模式之间切换),在显示textarea中的html源代码之前,您可能需要一些Ajax将html字符串转换为幕后的xhtml。