Jquery a soudainement cessé d'analyser xml

Pour certains navigateurs, pour certains clients, jquery a soudainement cessé d'analyser xml.

Exemple xml:

<?xml version="1.0" encoding="UTF-8"?> <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.opengis.net/wfs" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:example_namespace="https://mylink.com/wfs/example_namespace" xsi:schemaLocation="https://mylink.com/wfs/example_namespace mylink.com?SERVICE=WFS&amp;VERSION=1.0.0&amp;TYPENAME=example_namespace:TABLE&amp;REQUEST=DescribeFeatureType" numberMatched="unknown" numberReturned="1"> <gml:featureMember> <example_namespace:TABLE fid="TABLE.15"> <example_namespace:ID>15</example_namespace:ID> </example_namespace:TABLE> </gml:featureMember> </wfs:FeatureCollection> 

Exemple 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. }) 

MODIFIER:

Exemple plus général:

XML

 <?xml version="1.0" encoding="UTF-8"?> <a xmlns:c="http://www.example.com"> <c:b>TEST</c:b> </a> 

ET JS:

 console.log($(data).find("b").text()) 

Retourne maintenant: "", avant les retours: "TEST"

EDIT 2:

Problème similaire: Impossible d'extraire SOAP XML avec jQuery

Ce code fonctionnait à l'origine dans Chrome la semaine dernière et une fois que Chrome était mis à jour pour v60, il ne le fait plus.

Passez les data à $.parseXML() pour obtenir un #document , utilisez .querySelector()

 $.parseXML(data).querySelector("featureMember").querySelector("ID").textContent; 

En conséquence, passez le résultat de $.parseXML() à jQuery() et utilisez .find()

 $($.parseXML(data)).find("featureMember").find("ID").text(); 

Jsfiddle https://jsfiddle.net/5fuLquth/

Par exemple, l'analyse de XML à l'aide de jQuery comporte des bugs de compatibilité avec le navigateur que je crois. Cela a été une won't fix jquery bug précédemment.

Lorsqu'il existe des namespaces de namespaces dans le xml, vous pouvez utiliser les sélecteurs jquery comme ci-dessous en échappant aux deux points:

 .find('gml\\:featureMember') 

Ou utilisant nodeName :

 .find('[nodeName="gml:featureMember"]') 

Voir démo ci-dessous:

 var xml=`<?xml version="1.0" encoding="UTF-8"?><wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.opengis.net/wfs" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:example_namespace="https://mylink.com/wfs/example_namespace" xsi:schemaLocation="https://mylink.com/wfs/example_namespace mylink.com?SERVICE=WFS&amp;VERSION=1.0.0&amp;TYPENAME=example_namespace:TABLE&amp;REQUEST=DescribeFeatureType" numberMatched="unknown" numberReturned="1"><gml:featureMember><example_namespace:TABLE fid="TABLE.15"><example_namespace:ID>15</example_namespace:ID></example_namespace:TABLE></gml:featureMember></wfs:FeatureCollection>`; console.log($(xml) .find('gml\\:featureMember') .find("example_namespace\\:ID").text()); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>