首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成在HTML中有效的System.Xml.XmlDocument.OuterXml()输出

生成在HTML中有效的System.Xml.XmlDocument.OuterXml()输出
EN

Stack Overflow用户
提问于 2009-11-29 22:51:55
回答 1查看 3.3K关注 0票数 0

System.Xml.XmlDocument.OuterXml()将生成(例如)

代码语言:javascript
复制
<list id="myBooks">
  <book id="123" name="XML for muppets" />
  <book id="456" name="HTML for fools" />
</list>

如果您想将这个xml嵌入到HTML页面中,那么它将在IE中很好地工作(因为xml数据岛是html标准的扩展)。

但是,对于Firefox,您需要使用以下内容加载这个在DOMParser中包含xml的未知html标记

代码语言:javascript
复制
var list = document.getElementById("myBooks");
var doc = new DOMParser().parseFromString(list.outerHTML);

但是,因为HTML中的会将list.outerHTML视为

代码语言:javascript
复制
<list>
  <book id="123" name="XML for muppets">
     <book id="456" name="HTML for fools">
     </book>
  </book>
</list>

那么,如何让XmlDocument.OuterXml()输出xml完全结束标记而不是速记呢?

编辑添加的示例来说明

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2009-11-30 14:59:29

这有点杂乱无章,但在任何空节点中都添加了一个空格,这样就会发生变化。

代码语言:javascript
复制
<book id="123" name="XML for muppets" />

转到

代码语言:javascript
复制
<book id="123" name="XML for muppets"> </book>

期待着出现在DailyWTF上!

代码语言:javascript
复制
addSpaceToEmptyNodes(xmlDoc.FirstChild);

private void addSpaceToEmptyNodes(XmlNode node)
    {
        if (node.HasChildNodes)
        {
            foreach (XmlNode child in node.ChildNodes)
                addSpaceToEmptyNodes(child);
        }
        else         
            node.InnerText = " ";
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1817060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档