2016-06-30 6 views
0

Es ist meine erste Erfahrung mit XML, so offensichtlich sind die Dinge nicht so. Ich habe eine Datei in XML, und ich muss Daten davon mit Javascript abrufen. Der Inhalt der Datei folgt:Holen Sie Daten von XML-Datei auf Seite laden

<?xml version="1.0" encoding="utf-8"?> 
<data> 
    <Texts> 
     <Price><![CDATA[50 $]]></Price> 
     <CTA_text><![CDATA[MORE INFORMATION]]></CTA_text> 
    </Texts> 
</data> 

Und ich habe die Daten von ihm zu meiner HTML-Seite auf Last abzurufen. Die Frage ist also: Wie bekomme ich 50 $ und weitere Informationstexte von XML?

Antwort

1

Sie XMLHttpRequest() verwenden können, DOMParser(), for Schleife, Rekursion alle Knoten zu durchlaufen innerhalb xmldocument, ob .nodeType des Knotens 4 ist, verwenden .textContent Eigenschaft CDATASection Textinhalt abrufen des Knotens

<!DOCTYPE html> 
<html>  
    <head> 
    <script> 
     function iterateNodes(nodes) { 
     for (var i = 0; i < nodes.length; i++) { 
      if (nodes[i].nodeType === 4) { 
      document.body.innerHTML += nodes[i].textContent + "<br>" 
      }; 
      if (nodes[i].childNodes.length) { 
       iterateNodes(nodes[i].childNodes) 
      } 
      } 
     } 
     window.addEventListener("load", function() {   
     var request = new XMLHttpRequest(); 
     request.addEventListener("load", function() { 
      var parser = new DOMParser(); 
      var xml = parser.parseFromString(this.response, "text/xml") 
      var nodes = xml.documentElement.childNodes; 
      iterateNodes(nodes)    
     }); 
     request.open("GET", "data.xml"); 
     request.send(); 
     }) 
    </script> 
    </head>  
    <body>  
    </body>  
</html> 

plnkr http://plnkr.co/edit/gEZCWeHTwzk7o1GSAqzJ?p=preview

+0

Oh, kannst du erklären, was hier passiert? in Kommentaren? – NeedHate

+1

@NeedHate Erstellen Sie ein 'XML'' Dokument' aus 'XMLHttpRequest'' response'; rekursiv iteriere Knoten innerhalb von 'xml'' document'; Wenn der aktuelle iterierte Knoten '.nodeType' die' 4' ist, rufen Sie die Eigenschaft '.textContent' des Knotens ab – guest271314

1

Versuchen Sie den JavaScript XML-Parser zu verwenden. Es ist ziemlich einfach. Hier ist ein examle: http://www.w3schools.com/xml/dom_intro.asp

<script> 
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
     if (xhttp.readyState == 4 && xhttp.status == 200) { 
      myFunction(xhttp); 
     } 
    }; 
    xhttp.open("GET", "books.xml", true); 
    xhttp.send(); 

    function myFunction(xml) { 
     var xmlDoc = xml.responseXML; 
     document.getElementById("demo").innerHTML = 
     xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue; 
    } 
</script> 
Verwandte Themen