如何将字符串转换为JavaScript中的XML对象?

问题描述:

我知道this问题已经存在,但它没有给我带来好运。如何将字符串转换为JavaScript中的XML对象?

我有它加载通过以下方法用physicial XML文档的应用程序:

jQuery.ajax({ 
    type: "GET", 
    url: fileName, 
    dataType: "xml", 
    success: function (data) { 
     // etc... 
    } 
}); 

我解析XML并将其转换成被保存到一个变量,以便它可以容易地被存储在字符串一个数据库。我现在该如何将这个变量中的数据转换回XML对象,以便它可以被解析?

+0

你的数据可能看起来像什么? – Reigel 2010-06-16 14:26:48

非jQuery的版本:

var parseXml; 

if (window.DOMParser) { 
    parseXml = function(xmlStr) { 
     return (new window.DOMParser()).parseFromString(xmlStr, "text/xml"); 
    }; 
} else if (typeof window.ActiveXObject != "undefined" && new window.ActiveXObject("Microsoft.XMLDOM")) { 
    parseXml = function(xmlStr) { 
     var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.async = "false"; 
     xmlDoc.loadXML(xmlStr); 
     return xmlDoc; 
    }; 
} else { 
    parseXml = function() { return null; } 
} 

var xmlDoc = parseXml("<foo>Stuff</foo>"); 
if (xmlDoc) { 
    window.alert(xmlDoc.documentElement.nodeName); 
} 

因为jQuery的1.5,你可以使用jQuery.parseXML(),这在完全相同的方式与上面的代码工作:

var xmlDoc = jQuery.parseXML("<foo>Stuff</foo>"); 
if (xmlDoc) { 
    window.alert(xmlDoc.documentElement.nodeName); 
} 
+4

+1这不仅仅是非jQuery,这实际上解析XML正确,不像jQuery解析器。 – Anurag 2010-06-16 14:48:08

+0

我实际上正在寻找一个jQuery解决方案,但我知道我没有指定。我发现你的答案非常有用,但之前没有考虑过这种方法。 – 2010-06-16 14:54:21

+0

+1除了Anurags的评论:jQuery搞砸了我的有效XML(创建的文档是错误的),并不是解析XML的有效解决方案!它可以用于查询文档,但不能正确创建它 – Knickedi 2014-08-21 08:20:42

如果它仍然是XML格式,你应该能够将它包装在jQuery函数中,并开始使用jQuery来解析它。例如:

$(xmlStringFromDB).find('foo'); 
+0

如果xmlStringFromDB仍然是一个字符串,那么每次使用它时都会强制将字符串转换为XML。如果你只需要一次,或者可以链接所有的请求,那么你当然没问题,但除此之外,你应该将它保存在一个(临时)变量中。 – 2014-05-24 09:46:55

使用jQuery,你可以使用$.parseXML(str),https://api.jquery.com/jQuery.parseXML/