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.
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);
<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.
function getXmlString(xml) {
if (window.ActiveXObject) { return xml.xml; }
return new XMLSerializer().serializeToString(xml);
}
alert(getXmlString(xml));
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));
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
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>
}