J'essaie de comprendre le DOMParser code> , mais quelque chose ne va pas et je ne sais pas comment trouver le problème. Voici un code simple qui analyse une chaîne contenant le texte d'un XML:
const xml = '<data>Hello World</data>' const parser = new DOMParser() const result = parser.parseFromString(xml, 'text/xml') alert(JSON.stringify(result))
Comme vous pouvez le voir, j'obtiens un {"location": null} . Quelqu'un peut-il m'expliquer ce qui ne va pas et quel est cet emplacement ? Comment puis-je analyser cette chaîne en un objet comme le suggère la documentation?
4 Réponses :
Veuillez utiliser le script suivant: - Html-
<script>
var parser, xmlDoc;
var text = "<data>Hello`enter code here` World</data>";
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("data")[0].childNodes[0].nodeValue;
</script>
Javascript -
<p id="demo"></p>
Cela fonctionne comme vous le souhaitez.
Le Document renvoyé par parseFromString () a> n'est pas JSON, si vous souhaitez stringifier le résultat, utilisez un XMLSerializer .
const xml = '<data>Hello World</data>'; const doc = new DOMParser().parseFromString(xml, 'text/xml'); const docString = new XMLSerializer().serializeToString(doc); console.log(docString);
De la documentation -
L'interface DOMParser offre la possibilité d'analyser XML ou HTML code source d'une chaîne dans un document DOM.
Donc, il convertit XML ou HTML en DOM Document , pas JSON a >. Pour cette raison, le résultat n'a pu afficher aucun résultat par alert(JSON.stringify(result))
let s = new XMLSerializer(); console.log(s.serializeToString(result));
Pour le résultat attendu, utilisez XMLSerializer
const xml = '<data>Hello World</data>' const parser = new DOMParser() const result = parser.parseFromString(xml, 'text/xml') console.log(result); Output: #Document <data>Hello World</data>
parseFromString renvoie le document objet qui contient la représentation analysée du texte, comme:
const xml = '<data>Hello World</data>' const parser = new DOMParser() const result = parser.parseFromString(xml, 'text/xml') console.log(result)
Vous pouvez voir l'objet complet dans console.log () . Selon votre inquiétude quant à l'origine de "location": null , il est actuellement difficile de savoir quelle devrait être l'URL du document retourné.
Pour en savoir plus sur parseFromString , consultez ici . p >