web-dev-qa-db-fra.com

Convertir XML en chaîne et l'ajouter à la page

Je veux convertir un élément xml comme ceci:

<asin>​B0013FRNKG​</asin>​

chaîne en javascript

J'ai utilisé XMLSerializer:

new XMLSerializer().serializeToString(xml);

la chaîne ne s'affiche que sur alert () et dans la console. Sur la page, il dit simplement

[object Element][object Element]

Je veux récupérer la chaîne.

29
rzcl

Vous ne nous avez pas expliqué comment afficher cet objet. XMLSerializer fonctionne sur les nœuds DOM, donc votre objet doit être ajouté quelque part, par exemple:

document.getElementById('SomeDiv').appendChild(xml); 

et si vous voulez juste que la chaîne xml complète soit affichée:

var xmlText = new XMLSerializer().serializeToString(xml);
var xmlTextNode = document.createTextNode(xmlText);
var parentDiv = document.getElementById('SomeDiv');
parentDiv.appendChild(xmlTextNode);
40
veblock
<script type='text/javascript'>

    function xmlToString(xmlData) { 

        var xmlString;
        //IE
        if (window.ActiveXObject){
            xmlString = xmlData.xml;
        }
        // code for Mozilla, Firefox, Opera, etc.
        else{
            xmlString = (new XMLSerializer()).serializeToString(xmlData);
        }
        return xmlString;
    }   

</script>    

utilisez-le en cas de IE pour les problèmes de compatibilité du navigateur.

5
Avinash Anand
function getXmlString(xml) {
  if (window.ActiveXObject) { return xml.xml; }
  return new XMLSerializer().serializeToString(xml);
}
alert(getXmlString(xml));
4
maerics

Avez-vous essayé de joindre le résultat comme dans…

(new XMLSerializer()).serializeToString(xml)

De plus, j'utiliserais plutôt la console pour mieux voir le contenu:

console.log((new XMLSerializer()).serializeToString(xml));
2
inhan

Si l'élément DOM <asin>​B0013FRNKG​</asin>​ est stocké dans l'objet element, vous pouvez alors accéder à la valeur en utilisant:

element.textContent
0
Anurag

suivez ceci pour imprimer, ajouter des données à partir de données xml stockées sous forme de chaîne dans javascript

txt="<papers>"+"<paper>"+
 "<author>athor name</author>"+
"<title>title</title>"+
"<path>path</path>"+
"<track>which tack</track>"+
 "</paper>"+
"<paper>"+
"<author>athor name</author>"+
"<title>title</title>"+
"<path>path</path>"+
"<track>which tack</track>"+
"</paper>"+
"<paper>"+
"<author>athor name</author>"+
"<title>title</title>"+
"<path>path</path>"+
"<track>which tack</track>"+
"</paper>"+
"<papers>";
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);
    }

x=xmlDoc.getElementsByTagName("paper"); 
for (var i = 0; i < x.length; i++) {  
    var athor =x[i].childNodes[0].firstChild.nodeValue;
    var title = x[i].childNodes[1].firstChild.nodeValue;
    var path = x[i].childNodes[2].firstChild.nodeValue;
    var tack =x[i].childNodes[3].firstChild.nodeValue;
    //do something with these values...
    //each iteration gives one paper details    
    var xml=document.getElementById("element_id");//<div id="element_id"></div>
    var li = document.createElement("br");// create a new <br>  
    newlink = document.createElement('A'); // creating an <a> element
    newlink.innerHTML = athor;// adding <a>athor value here</a>
    newlink.setAttribute('href', path);// <a href="path"></a>

    newlink.appendChild(li);// <a href="path">athor</a><br>
    document.getElementById("element_id").appendChild(newlink);//finaly it becomes <div id="element_id"><a href="path">athor</a><br></div>


}
0
Jose Kj