2
votes

Pourquoi est-ce que j'obtiens un {"location": null} lorsque j'essaye de convertir un texte / xml en objet?

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?


0 commentaires

4 Réponses :


-1
votes

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.


0 commentaires

2
votes

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);


0 commentaires

-1
votes

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>


0 commentaires

1
votes

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é.

 entrez la description de l'image ici

Pour en savoir plus sur parseFromString , consultez ici . p >


0 commentaires