【发布时间】:2009-11-30 22:59:29
【问题描述】:
System.Xml.XmlDocument.OuterXml() 将生成(例如)
<list id="myBooks">
<book id="123" name="XML for muppets" />
<book id="456" name="HTML for fools" />
</list>
如果您想将此 xml 嵌入 HTML 页面,那么它在 IE 中可以正常工作(因为 xml 数据岛是对 html 标准的扩展)
但是对于 Firefox,您需要使用类似的方式加载此 unknown html tag that happens to contain xml into a DOMParser
var list = document.getElementById("myBooks");
var doc = new DOMParser().parseFromString(list.outerHTML);
但是因为 <tag /> is not == <tag></tag> 在 HTML firefox 中将 list.outerHTML 视为
<list>
<book id="123" name="XML for muppets">
<book id="456" name="HTML for fools">
</book>
</book>
</list>
那么如何让 XmlDocument.OuterXml() 输出 xml 将完整的结束标签而不是速记?
编辑 - 添加示例来说明
<html><body>
<xml id="myBooks">
<list>
<book id="123" name="XML for muppets" />
<book id="456" name="HTML for fools" />
</list>
</xml>
<script>
var oXml = document.getElementById("myBooks");
alert(oXml.innerHTML);
</script>
</body></html>
【问题讨论】:
-
我还应该说,为 XHTML 添加(不同的)doctype 不是一种选择,也不是使用 XMLHttpRequest 加载 xml - 它必须是内联的。
-
我刚刚使用 XHTML 严格和过渡文档类型测试了上述内容 - 仍然不能正确解释自闭标签 (FF3.5)
-
当然,您需要使用不同的 mime 类型来让 Firefox 将输入解释为 xml,但它在 IE 中将无法工作。 Josh Einstein 关于使用 XmlWriter 而不是 OuterXml 的建议对我来说似乎是一个好方法。
-
另一个小问题 - 如果您的 xml 包含任何大小写混合的标记或属性名称,它们将被转换为小写。