如何在Chrome下使用javascript获取整个xml节点? var xml='1'; var xmlDoc=$.parseXML(xml); $(xmlDoc).find(“book”).each(函数(){ 警报($(本)); });
我想看到的是:如何在Chrome下使用javascript获取整个xml节点? var xml='1'; var xmlDoc=$.parseXML(xml); $(xmlDoc).find(“book”).each(函数(){ 警报($(本)); });,javascript,xml,google-chrome,Javascript,Xml,Google Chrome,我想看到的是: var xml = '<books><book><id>1</id></book></books>'; var xmlDoc = $.parseXML(xml); $(xmlDoc).find("book").each(function(){ alert($(this)); }); 1 在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));
});
1
在IE中,我可以使用$(this)[0].xml。但是在Chrome中,没有xml属性。
那我该怎么办
谢谢。如果您想查看1
(book
元素中id
元素的文本),请使用
实例|来源
(您的格式设置完全改变了这个问题——首先正确设置格式的重要性!)
更新:
我认为实现这一点的唯一方法(除了将自己的DOM编写为XML序列化程序之外)(不,是有办法的)是将其包装在另一个元素中并使用html
:
alert($(this).find('id').text());
alert($(“”).append(this.html());// 如果要查看1
(book
元素中id
元素的文本),请使用
实例|来源
(您的格式设置完全改变了这个问题——首先正确设置格式的重要性!)
更新:
我认为实现这一点的唯一方法(除了将自己的DOM编写为XML序列化程序之外)(不,是有办法的)是将其包装在另一个元素中并使用html
:
alert($(this).find('id').text());
alert($(“”).append(this.html());// 最简单的方法是使用浏览器的内置XMLSerializer
实现(在所有主要浏览器的当前版本中都有实现,包括IE 9):
函数序列化xmlNode(xmlNode){
if(typeof window.XMLSerializer!=“未定义”){
返回新的window.XMLSerializer().serializeToString(xmlNode);
}else if(typeof xmlNode.xml!=“未定义”){
返回xmlNode.xml;
}
返回“”;
}
var xml='1';
var xmlDoc=$.parseXML(xml);
$(xmlDoc).find(“book”).each(函数(){
警报(序列化xmlnode(this));
});
参考资料:
最简单的方法是使用浏览器内置的XMLSerializer
实现(存在于所有主要浏览器的当前版本中,包括IE 9):
函数序列化xmlNode(xmlNode){
if(typeof window.XMLSerializer!=“未定义”){
返回新的window.XMLSerializer().serializeToString(xmlNode);
}else if(typeof xmlNode.xml!=“未定义”){
返回xmlNode.xml;
}
返回“”;
}
var xml='1';
var xmlDoc=$.parseXML(xml);
$(xmlDoc).find(“book”).each(函数(){
警报(序列化xmlnode(this));
});
参考资料:
XMLSerializer
,这项工作做得很好。谢谢T.J.我没想到你会在这么短的时间内回复。在问题发布并立即更正后,我立即意识到了格式错误。现代浏览器实现了XMLSerializer
,这项工作做得很好。谢谢T.J。我没想到你会在这么短的时间内回复。在问题发布并立即更正后,我立即意识到格式错误。
alert($("<x>").append(this).html()); // <== Probably dangerous
alert($("<x>").append(this.cloneNode(true)).html());
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) );
});