2012-03-27 4 views
20

voglio convertire un elemento XML come questo:Conversione XML per String e aggiungere alla pagina

<asin>​B0013FRNKG​</asin>​ 

a stringa in JavaScript

ho usato XMLSerializer:

new XMLSerializer().serializeToString(xml); 

la stringa unica mostra in allerta() e nella console. Nella pagina si dice semplicemente

[object Element][object Element] 

Voglio ottenere la stringa.

+0

vuoi ottenere ' " B0013FRNKG "', 'o" B0013FRNKG"'? – Anurag

+0

Preferisco solo "B0013FRNKG" – rzcl

risposta

30

Non ci hanno detto come vai a mostrare quell'oggetto XMLSerializer funziona su nodi DOM, così il vostro oggetto deve essere aggiunto da qualche parte, per esempio:

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

e se si desidera solo la stringa completa XML da visualizzare:

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

Questo ha funzionato! Grazie. Non sapevo della parte 'createTextNode'. Pensavo che l'XML potesse essere usato come JSON. – rzcl

2

Avete provato che racchiude il risultato come in ...

(new XMLSerializer()).serializeToString(xml) 

Inoltre, mi piacerebbe utilizzare console invece di vedere il contenuto meglio:

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

Se l'elemento DOM <asin>​B0013FRNKG​</asin>​ viene memorizzato nell'oggetto element, allora si può accedere al valore utilizzando:

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>  

utilizzare questo in caso di IE per problemi di compatibilità del browser.

+0

Ho usato esattamente questo codice per un po ', ma mi sono imbattuto in un client che esegue IE10 in Win7. Hanno "uso natvie XMLHTTP" selezionato in Opzioni Internet (non che sia rilevante in questo caso). Tuttavia "window.ActiveXObject" viene valutato come true ma xmlData.xml restituisce * undefined *. Qualche idea del perché? –

0

seguire questo per stampare, aggiungere i dati da dati XML memorizzati come stringa all'interno 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> 


}