Jquery突然停止解析xml
对于某些浏览器,对于某些客户端,jquery突然停止解析xml。
示例xml:
15
示例jquery
$.get(link, function(data) { //Response is xml like in example. console.log(data) //works as before console.log($(data).find("featureMember").find("ID").text()) //Doesn't work now for some clients, but worked before. })
编辑:
更一般的例子:
XML
TEST
和JS:
console.log($(data).find("b").text())
现在返回:“”,返回之前:“TEST”
编辑2:
类似的问题: 无法使用jQuery提取SOAP XML
此代码最初在Chrome上周使用,一旦Chrome更新到v60,它就不再使用了。
将data
传递给$.parseXML()
以获取#document
,使用.querySelector()
$.parseXML(data).querySelector("featureMember").querySelector("ID").textContent;
或者将$.parseXML()
结果传递给jQuery()
并使用.find()
$($.parseXML(data)).find("featureMember").find("ID").text();
jsfiddle https://jsfiddle.net/5fuLquth/
以这种方式使用jQuery解析XML有一些浏览器兼容性错误我相信。 这是以前won't fix jquery bug
。
当xml中有namespaces
时,您可以通过转义冒号来使用如下所示的jquery
选择器:
.find('gml\\:featureMember')
或使用nodeName
:
.find('[nodeName="gml:featureMember"]')
见下面的演示:
var xml=`15 `; console.log($(xml) .find('gml\\:featureMember') .find("example_namespace\\:ID").text());