在angular2中解析xml以在视图中呈现

时间:2016-08-04 11:13:55

标签: javascript html xml angular

我是否需要解析我的xml以从xml获取数据以在html中呈现?我目前正在使用http.get请求获取本地.xml文件,并在控制台日志中显示xml文件中的所有信息,我认为它只是阅读它。

问题是如何在angular2?

中将xml转换为json格式

我尝试了console.log(data.title),但这让我回归unidentified

getXml() {
   this.http.get('../../xmlConf/dashboard_journey.xml')
    .map(response => response.text())
    .subscribe(data => {
        if(data) {
            console.log('fetching your xml');
            console.log(data); // this shows me everything
        }
    });
}

XML

<xml>
<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>
</journey>

使用以下答案

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

上面代码的console.log:

enter image description here

目前正在循环迭代解析的xml,但是在我的视图中它只给了我一个对象。 ngFor仅迭代数组中的对象。

for (var i = 0; i <= newFormat.childNodes.length; i++) {
                this.title = newFormat.getElementsByTagName('title')[i].childNodes[0].nodeValue;
                this.desc = newFormat.getElementsByTagName('desc')[i].childNodes[0].nodeValue;
                console.log(this.title + ' = ' +  this.desc);
            }

视图:

<li>{{ title }}</li>

1 个答案:

答案 0 :(得分:2)

您可以使用DOMParser

您只需将数据变量传递给DOMParser,然后就可以通过引用访问元素

示例

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