是否有一种默认机制来获取XML节点的平面字符串表示形式?

时间:2011-12-02 18:22:23

标签: javascript xml dom

我不想在以下方面使用jQuery:

如果我有以下XML

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

      </b>
      and more text still
    </a>
   </parent>

想要打电话给

// pseudo ...我传入节点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转换为扁平字符串,但包含节点自己的开始和结束标记(如果有属性,那么它也会包含那些)。

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

2 个答案:

答案 0 :(得分:3)

根据发布的答案here,跨浏览器的方式看起来像

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);
  }

如果我正确理解了这个问题,那就是。

答案 1 :(得分:1)

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

我不知道其他浏览器可以使用哪些设施,但它们可能有一个。

最糟糕的情况是,您必须编写一个函数来手动执行此操作,该函数遍历所有节点并写入字符串。 This answer应该让你开始。