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