是否存在一种默认机制来获取XML Node的平面字符串表示形式

Is there a default mechanism for getting a flat string representation of an XML Node?

本文关键字:Node XML 平面 字符串 表示 获取 存在 机制 默认 一种 是否      更新时间:2023-09-26

我不想为以下内容使用jQuery:

如果我有以下XML

<parent>
    <a >some text
      <b propA="foo">some more text
      </b>
      and more text still
    </a>
   </parent>

并且想调用像

这样的东西

//伪…我传入节点1,因为节点0是一个无用的空文本节点…

getFlatXMLAsString (parent.childNodes [1])

并接收一个看起来像"<a>some text'n<b propA="foo">some more text'n'n</b>and more text still</a>"

的字符串

请注意它是如何将XML转换为平面字符串的,但包含节点自己的开始和结束标记(如果有属性,它也会有这些属性)。

显然我可以手动完成,但我希望有一些内置的机制,可以防止我重新发明轮子。

根据这里发布的答案,跨浏览器的方式来做这个看起来像

function outerHTML(node){
    // if IE, Chrome take the internal method otherwise build one
  return node.outerHTML || (
  function(n){
      var div = document.createElement('div'), h;
      div.appendChild( n.cloneNode(true) );
      h = div.innerHTML;
      div = null;
      return h;
  })(node);
  }

如果我理解正确的话

在Mozilla和Webkit浏览器中,您可以使用XMLSerializer。做个对象测试。

我不知道其他浏览器有什么功能,但他们可能有。

最坏的情况是,你必须手工编写一个函数来完成这个任务,它遍历所有节点并写入一个字符串。