2012-03-27 7 views
20

ich ein XML-Element wie folgt konvertieren möchten:Convert XML String und fügen Sie auf Seite

<asin>​B0013FRNKG​</asin>​ 

bespannen in Javascript

I XMLSerializer verwendet:

new XMLSerializer().serializeToString(xml); 

der Zeichenfolge nur zeigt auf alert() und in der Konsole. Auf der Seite heißt es nur

[object Element][object Element] 

Ich möchte die Zeichenfolge erhalten.

+0

tun Sie ' " B0013FRNKG "' oder '" B0013FRNKG"' zu bekommen? – Anurag

+0

Ich bevorzuge nur "B0013FRNKG" – rzcl

Antwort

30

Sie haben uns nicht gesagt, wie Sie das Objekt anzeigen. XMLSerializer arbeitet auf DOM-Knoten, so dass Ihr Objekt irgendwo, zum Beispiel hinzugefügt werden:

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

und wenn Sie nur die vollständige XML-Zeichenfolge angezeigt werden soll:

var xmlText = new XMLSerializer().serializeToString(xml); 
var xmlTextNode = document.createTextNode(xmlText); 
var parentDiv = document.getElementById('SomeDiv'); 
parentDiv.appendChild(xmlTextNode); 
+0

Das hat funktioniert! Vielen Dank. Ich kannte den 'createTextNode' Teil nicht. Ich dachte, XML könnte wie JSON verwendet werden. – rzcl

2

Haben Sie versucht, das Ergebnis umschließt wie in ...

(new XMLSerializer()).serializeToString(xml) 

Auch würde ich Konsole verwenden, anstatt den Inhalt besser zu sehen:

console.log((new XMLSerializer()).serializeToString(xml)); 
4
function getXmlString(xml) { 
    if (window.ActiveXObject) { return xml.xml; } 
    return new XMLSerializer().serializeToString(xml); 
} 
alert(getXmlString(xml)); 
0

Wenn das DOM-Element <asin>​B0013FRNKG​</asin>​ in dem Objekt gespeichert wird element, dann können Sie den Wert Zugriff mit:

element.textContent 
4
<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>  

Verwenden Sie dies bei IE für Browserkompatibilitätsprobleme.

+0

Ich habe genau diesen Code für eine Weile verwendet, aber ich bin auf einen Client mit IE10 in Win7 gestoßen. Sie haben "natvie XMLHTTP verwenden" in Internetoptionen überprüft (nicht das ist in diesem Fall relevant). "Window.ActiveXObject" wird jedoch truthy ausgewertet, aber xmlData.xml gibt * undefined * zurück. Irgendeine Idee warum? –

0

folgen diese zu drucken, fügen Sie Daten aus XML-Daten gespeichert als String in javscript

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> 


}