0
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 属性。那我该怎么办?

谢谢。

4

2 回答 2

3

最简单的方法是使用浏览器的内置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) );
});

参考:

于 2012-11-02T10:49:06.393 回答
0

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

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

实例 | 来源

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

更新

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

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

...但这会将元素移出原始文档。所以你可以通过克隆来避免这种情况:

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

实例| 来源

于 2012-11-02T09:49:13.257 回答