【发布时间】:2010-11-22 14:41:42
【问题描述】:
我有一个 HTML 文档作为 Linq-to-XML 对象树存储在内存中。考虑到 HTML 的特性,如何将 XDocument 序列化为 HTML?
例如,<br/> 等空标签应序列化为<br>,而空的<div/> 应序列化为<div></div>。
可以从 XSLT 样式表输出 HTML,XmlWriterSettings 有一个可以设置为 HTML 的 OutputMethod 属性 - 但设置器是 internal,供 XSLT 或 Visual Studio 使用,我不能似乎找到了一种将任意 XML 序列化为 HTML 的方法。
因此,除了将 XSLT 仅用于 HTML 输出功能(即通过 XDocument->XmlReader->via XSLT 的其他毫无意义的链运行文档到 HTML 之类的操作)之外,有没有一种方法可以序列化 . NET XDocument 到 HTML?
【问题讨论】:
-
序列化为 XHTML,问题解决。您是否有任何特殊原因要序列化为旧 HTML?此外,
<div />应该等同于<div></div>... -
@Matt:浏览器在接受 application/xhtml+xml 时可能会正确理解 ,否则不是。 IE 不会也不会理解 application/xhthml+xml。
-
anthony 说的是问题的核心:Xml(真的:只是一棵有效的树)非常适合 处理,但 HTTP 支持很差,所以我会而不是在与浏览器通信时使用任何形式的 xml。不仅仅是浏览器;使用 xml 意味着不同的内容类型,这会影响 SEO、缓存和代理,所以我宁愿完全避免这些潜在的陷阱并使用普通的旧 html。
-
我仍然坚持我最初所说的。我坚信 XHTML 是 HTML 的前进方向。 HTML 是一团糟(正如对这个问题的迫切需要所证明的那样)。做正确的事,XHTML,正确的内容类型,让浏览器担心他们的错误实现。在任何情况下,这是你能做的最好的事情。根据我的经验,IE 总体上只是坏了。
-
哦,原则上我喜欢 XHTML(哎呀,在我短暂的博客尝试中,我曾经写过eamon.nerbonne.org/2006/12/why-xhtml-still-serves-purpose.html)——但我将它视为一种开发工具,而不是一个现实的部署选项。我不喜欢 IE6,但我更希望 IE6 用户看到一个不完美但功能强大的布局,而不是“另存为”对话框。
标签: c# .net html xml linq-to-xml