Maison >interface Web >js tutoriel >Comment analyser des données XML en JavaScript à l'aide de l'analyseur DOM ?

Comment analyser des données XML en JavaScript à l'aide de l'analyseur DOM ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-05 11:59:15669parcourir

How to Parse XML Data in JavaScript Using the DOM Parser?

Analyser XML à l'aide de JavaScript

L'analyse de XML à l'aide de JavaScript implique la conversion des données XML dans un format plus gérable pour le traitement. Pour analyser du XML sans framework externe, nous pouvons utiliser le modèle d'objet de document (DOM) disponible dans la plupart des navigateurs modernes.

Considérez le XML suivant stocké dans une variable de chaîne :

<address>
  <street>Roble Ave</street>
  <streetNumber>649</streetNumber>
  <lat>37.45127</lat>
  <lng>-122.18032</lng>
  <distance>0.04</distance>
  <postalcode>94025</postalcode>
  <placename>Menlo Park</placename>
  <adminCode2>081</adminCode2>
  <adminName2>San Mateo</adminName2>
  <adminCode1>CA</adminCode1>
  <adminName1>California</adminName1>
  <countryCode>US</countryCode>
</address>

Pour analyser ce XML en utilisant DOM, nous pouvons suivre ces étapes :

if (window.DOMParser) {
  parser = new DOMParser();
  xmlDoc = parser.parseFromString(txt, "text/xml");
} else { // Internet Explorer
  xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async = false;
  xmlDoc.loadXML(txt);
}

Une fois le XML analysé, nous pouvons récupérer des valeurs spécifiques du nodes :

// Gets house address number
console.log(xmlDoc.getElementsByTagName("streetNumber")[0].childNodes[0].nodeValue);

// Gets Street name
console.log(xmlDoc.getElementsByTagName("street")[0].childNodes[0].nodeValue);

// Gets Postal Code
console.log(xmlDoc.getElementsByTagName("postalcode")[0].childNodes[0].nodeValue);

De plus, si le XML contient des préfixes d'espace de noms, les préfixes ne doivent pas être inclus lors de la demande d'espace de noms :

// XML with Namespace prefixes
txt = `
Roble Ave 649 94025
`; // Parse with Namespace prefixes if (window.DOMParser) { parser = new DOMParser(); xmlDoc = parser.parseFromString(txt, "text/xml"); } else { // Internet Explorer xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = false; xmlDoc.loadXML(txt); } // Gets "streetNumber" (note there is no prefix of "sn") console.log(xmlDoc.getElementsByTagName("streetNumber")[0].childNodes[0].nodeValue); // Gets Street name console.log(xmlDoc.getElementsByTagName("street")[0].childNodes[0].nodeValue); // Gets Postal Code console.log(xmlDoc.getElementsByTagName("postalcode")[0].childNodes[0].nodeValue);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn