2016-08-04 17 views
0

Ich habe meine XML-Daten in das json-Format konvertiert, damit mein angular2 in meiner Ansicht aufgerufen wird. Ich habe wenige Daten in meinem XML, so dass ich es durchlaufen muss, aber for(var... es sagt cannot find name array und Eigenschaft lenght nicht existiert am Typ Dokument.angular2 ngRepeat zum Durchschleifen von xml-Daten

getXml() { 
    this.http.get('../../xmlConf/dashboard_journey.xml') 
    .map(response => response.text()) 
    .subscribe(data => { 
     if(data) { 
      var parser = new DOMParser(); 
      var xmlData = parser.parseFromString(data, "application/xml"); 

      for (var index = 0; index < xmlData.length; index++) { 
       var element = xmlData[index]; 

      } 
     } 
    }); 
} 

diese Linie die XML-Daten zurückgibt, die ich habe 5 dafür werde ich Daten

var xmlData = parser.parseFromString(data, "application/xml"); 

XML durch eine Schleife benötigen:

<journey> 
<title>Click and Collect</title> 
<shortDesc> 
    <short_desc_1>lorem</short_desc_1> 
    <short_desc_2>lorem</short_desc_2> 
</shortDesc> 
<longDesc> 
    lorem 
</longDesc> 
<imageName> 
    <img src="/journey_images/clickandcollect.jpg" alt="Click and Collect"/> 
</imageName> 

Was wollte ich als Endresultat haben.

wie in angular1 bei der Interaktion mit JSON Format Daten vom Server können Sie auf die Elemente wie data.obj zugreifen oder in HTML können Sie eine ng-Wiederholung der Antwortdaten.

<div ng-repeat="item in items"> 
<div>{{item.title}}</div> 
<div>{{item.longDesc}}</div> 
<div>{{item.imageName}}</div> 
</div> 

Antwort

0

Sie können nur Knoten in dem Dokument durchlaufen, das Sie vom DOMParser erhalten.

Mit var tags = xmlData. getElementsByTagName('journey') erhalten Sie alle Knoten und Sie können über sie interagieren.

var node= xmlData.getElementsByTagName('*'); 
for (var i = 0; i < node.length; i++) { 
    alert(node[i].nodeName + ' = ' + node[i].firstChild.nodeValue); 
} 
+0

Ich werde das versuchen, ich habe meinen ursprünglichen Beitrag oben in Bezug auf das, was ich tun wollte, aktualisiert. – nCore

0

DOMParser.parseFromString gibt ein Document Objekt.

Zuerst müssen Sie entscheiden, was Sie durchlaufen möchten. Zum Beispiel, wenn Sie alle journey Tags iterieren möchten, können Sie verwenden:

var journeys = xmlData.getElementsByTagName('journey'); 

Dieses eine collection von Element Objekte zurück, die Sie durchlaufen können.

+0

Ich werde das versuchen, ich habe meinen ursprünglichen Beitrag oben in Bezug auf das, was ich tun wollte, aktualisiert. – nCore

+0

Sie haben eine Frage gestellt und eine Antwort bekommen (eigentlich zwei Antworten). Dann änderst du die Frage? Wenn Sie eine andere Frage haben, sollten Sie eine andere Frage stellen. Aktualisieren Sie nicht die ursprüngliche Frage mit einem Follow-up, nachdem Sie Ihre Antwort erhalten haben. – yarons