我已将我的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>
答案 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');
这将返回您可以迭代的collection个Element个对象。