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 属性。那我该怎么办?
谢谢。
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) );
});
参考:
如果要查看1
(id
元素内book
元素的文本),请使用
alert($(this).find('id').text());
实例 | 来源
(您的格式完全改变了问题——首先正确格式的重要性!)
更新:
我相信获得这个的唯一方法(除了编写自己的 DOM-to-XML 序列化程序) (不,还有另一种可能更好的方法)是将它包装在另一个元素中并使用html
:
alert($("<x>").append(this).html()); // <== Probably dangerous
...但这会将元素移出原始文档。所以你可以通过克隆来避免这种情况:
alert($("<x>").append(this.cloneNode(true)).html());