J'ai une chaîne variable qui contient du XML bien formé et valide. J'ai besoin d'utiliser du code JavaScript pour analyser ce flux.
Comment puis-je accomplir cela en utilisant du code JavaScript (compatible avec le navigateur)?
la source
J'ai une chaîne variable qui contient du XML bien formé et valide. J'ai besoin d'utiliser du code JavaScript pour analyser ce flux.
Comment puis-je accomplir cela en utilisant du code JavaScript (compatible avec le navigateur)?
Mise à jour: Pour une réponse plus correcte, voir la réponse de Tim Down .
Internet Explorer et, par exemple, les navigateurs basés sur Mozilla exposent différents objets pour l'analyse XML, il est donc sage d'utiliser un framework JavaScript comme jQuery pour gérer les différences entre les navigateurs.
Un exemple vraiment basique est:
var xml = "<music><album>Beethoven</album></music>";
var result = $(xml).find("album").text();
Remarque: comme indiqué dans les commentaires; jQuery ne fait pas vraiment d'analyse XML, il s'appuie sur la méthode DOM innerHTML et l'analysera comme il le ferait avec du HTML, donc soyez prudent lorsque vous utilisez des noms d'éléments HTML dans votre XML. Mais je pense que cela fonctionne assez bien pour une `` analyse '' XML simple, mais ce n'est probablement pas suggéré pour une analyse XML intensive ou `` dynamique '' où vous ne savez pas d'avance quel XML va descendre et cela teste si tout analyse comme prévu.
innerHTML
propriété d'un élément, ce qui n'est pas du tout fiable.jQuery()
] analyse HTML, pas XML"Réponse mise à jour pour 2017
Ce qui suit analysera une chaîne XML dans un document XML dans tous les principaux navigateurs. Sauf si vous avez besoin de la prise en charge d'IE <= 8 ou d'un navigateur obscur, vous pouvez utiliser la fonction suivante:
Si vous devez prendre en charge IE <= 8, ce qui suit fera le travail:
Une fois que vous avez
Document
obtenu un viaparseXml
, vous pouvez utiliser les méthodes / propriétés de traversée DOM habituelles telles quechildNodes
etgetElementsByTagName()
pour obtenir les nœuds souhaités.Exemple d'utilisation:
Si vous utilisez jQuery, à partir de la version 1.5, vous pouvez utiliser sa
parseXML()
méthode intégrée , qui est fonctionnellement identique à la fonction ci-dessus.la source
$()
pour l'analyse XML . Lisez les commentaires plus attentivement: cela ne fonctionne tout simplement pas dans de nombreuses situations.parseXML()
méthode de jQuery utilise une chaîne. Je suis légèrement réticent à changer la réponse car je n'ai pas de moyen facile de la tester pour le moment.La plupart des exemples sur le Web (et certains présentés ci-dessus) montrent comment charger un XML à partir d'un fichier de manière compatible avec un navigateur. Cela s'avère facile, sauf dans le cas de Google Chrome qui ne prend pas en charge la
document.implementation.createDocument()
méthode. Lorsque vous utilisez Chrome, pour charger un fichier XML dans un objet XmlDocument, vous devez utiliser l'objet XmlHttp intégré, puis charger le fichier en transmettant son URI.Dans votre cas, le scénario est différent, car vous souhaitez charger le XML à partir d'une variable de chaîne , pas d'une URL. Pour cette exigence cependant, Chrome fonctionne censément comme Mozilla (ou du moins j'ai entendu parler) et prend en charge la méthode parseFromString ().
Voici une fonction que j'utilise (elle fait partie de la bibliothèque de compatibilité du navigateur que je suis en train de construire):
la source
if(window.ActiveXObject){...}
var dp; try{ dp = new DOMParser() } catch(e) { }; if(dp) { // DOMParser supported } else { // alert('you need to consider upgrading your browser\nOr pay extra money so developer can support the old versions using browser sniffing (eww)') }
.Marknote est un joli analyseur XML JavaScript multi-navigateur léger. Il est orienté objet et contient de nombreux exemples, et l' API est documentée. C'est assez nouveau, mais cela a bien fonctionné jusqu'à présent dans l'un de mes projets. Une chose que j'aime à ce sujet, c'est qu'il lira XML directement à partir de chaînes ou d'URL et vous pouvez également l'utiliser pour convertir le XML en JSON.
Voici un exemple de ce que vous pouvez faire avec Marknote:
la source
J'ai toujours utilisé l'approche ci-dessous qui fonctionne dans IE et Firefox.
Exemple XML:
JavaScript:
la source
innerText
au lieu degetAttribute()
Apparemment, jQuery fournit désormais jQuery.parseXML http://api.jquery.com/jQuery.parseXML/ à partir de la version 1.5
jQuery.parseXML( data )
Retour:XMLDocument
la source
Veuillez jeter un œil à XML DOM Parser ( W3Schools ). Il s'agit d'un tutoriel sur l'analyse DOM XML. L'analyseur DOM réel diffère d'un navigateur à l'autre, mais l'API DOM est normalisée et reste la même (plus ou moins).
Vous pouvez également utiliser E4X si vous pouvez vous limiter à Firefox. Il est relativement plus facile à utiliser et fait partie de JavaScript depuis la version 1.6. Voici un petit exemple d'utilisation ...
la source
Pour plus d'informations, consultez ce http://www.easycodingclub.com/xml-parser-in-javascript/javascript-tutorials/
la source
Avertissement : j'ai créé un analyseur rapide de xml
J'ai créé fast-xml-parser pour analyser une chaîne XML en objet JS / JSON ou objet de traversée intermédiaire. Il devrait être compatible avec tous les navigateurs (cependant testé sur Chrome, Firefox et IE uniquement).
Usage
Remarque : Il n'utilise pas l'analyseur DOM mais analyse la chaîne à l'aide de RE et la convertit en objet JS / JSON.
Essayez-le en ligne , CDN
la source
Vous pouvez également utiliser la fonction jquery ($. ParseXML) pour manipuler la chaîne xml
exemple javascript:
la source