繁体   English   中英

如何在Chrome下使用javascript获取整个xml节点?

[英]How can i get the entire xml node with javascript under Chrome?

var xml = '<books><book><id>1</id></book></books>';
var xmlDoc = $.parseXML(xml);
$(xmlDoc).find("book").each(function(){
  alert($(this));
});

我想看的是:

<book><id>1</id></book>

在IE中,我可以使用$(this)[0] .xml。 但是在Chrome中,没有xml属性。 那我该怎么办?

谢谢。

最简单的方法是使用浏览器的内置XMLSerializer实现(在包括IE 9在内的所有主要浏览器的当前版本中提供):

function serializeXmlNode(xmlNode) {
    if (typeof window.XMLSerializer != "undefined") {
        return new window.XMLSerializer().serializeToString(xmlNode);
    } else if (typeof xmlNode.xml != "undefined") {
        return xmlNode.xml;
    }
    return "";
}

var xml = '<books><book><id>1</id></book></books>';
var xmlDoc = $.parseXML(xml);
$(xmlDoc).find("book").each(function(){
    alert( serializeXmlNode(this) );
});

参考文献:

如果要查看1book元素中id元素的文本),请使用

 alert($(this).find('id').text()); 

现场示例| 资源

(您的格式化完全改变了这个问题-首先正确格式化的重要性!)

更新

我相信实现此目的的唯一方法(除了编写自己的DOM-to-XML序列化程序之外) (不,还有另一种可能更好的方法)是将其包装在另一个元素中并使用html

alert($("<x>").append(this).html()); // <== Probably dangerous

......但将元素迁出原文件的。 因此,您可以通过克隆来避免这种情况:

alert($("<x>").append(this.cloneNode(true)).html());

现场示例 | 资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM