angular2 ngRepeat循环遍历xml数据

时间:2016-08-04 13:45:41

标签: javascript xml foreach angular

我已将我的xml数据转换为json格式,以便在我的视图中调用angular2。我的xml中的数据很少,所以我需要循环访问它,但是for(var...表示cannot find name array并且属性lenght在类型Document上不存在。

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];

            }
        }
    });
}

这一行将返回我需要循环的xml数据

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

XML数据我有5个:

<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>

我希望得到的是结果。

就像在angular1中,当与服务器中的json格式数据交互时,您可以访问data.obj或html等项目,您可以对响应数据执行ng重复。

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

2 个答案:

答案 0 :(得分:0)

您只能遍历从DOMParser获取的文档中的节点。

使用var tags = xmlData. getElementsByTagName('journey'),您可以获得所有节点,并且可以对它们进行交互。

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

答案 1 :(得分:0)

DOMParser.parseFromString会返回Document个对象。

首先,您需要决定要循环的内容。例如,如果要迭代所有journey标记,可以使用:

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

这将返回您可以迭代的collectionElement个对象。