如何将xml解析为Json ionic 2

时间:2017-03-23 15:59:59

标签: json xml angular ionic2

过去三天我一直在讨论这个问题。我想将通过HTTP检索的XML转换为JSON,这样我就可以在离子2中显示它。这是我在提供者中的代码..任何帮助都将非常感谢..谢谢!

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';

import 'rxjs/add/operator/map';

import * as xml2js from "xml2js";


@Injectable()
export class News {

    constructor(public http: Http) { }

    public getData() {

        this
            .http
            .get('https://www.ug.edu.gh/news.xml')
            .map(res => {

                var cleanedString = res.toString().replace("\ufeff", "");

                xml2js
                .parseString(cleanedString, (error, result) => {

                    console.log(result);
                    return result;

                });

            })
            .subscribe((data) => {
                console.log(data)
            }, (err) => {
                console.log(err)
            });

    }
}

2 个答案:

答案 0 :(得分:0)

用于在离子2中将xml解析为json 您现在可以使用命令

安装xml2json的类型
typings install xml2json --save

如果它产生这样的错误

'typings' is not recognized as an internal or external command,
 operable program or batch file.

然后首先使用此命令安装输入

npm install typings -g

然后运行上一个命令

typings install xml2json --save

然后它会正常工作。 希望它对你有用

答案 1 :(得分:0)

你快到了。当您return parseString方法的数据时出现问题。您应该使用临时变量,从parseString方法分配结果并返回该临时变量,如下所示:

// ...
.map(res => {

    let cleanedString = res.toString().replace("\ufeff", "");
    let jsonData;

    xml2js
    .parseString(cleanedString, (error, result) => {

        if(error) {
            console.error(error);
            jsonData = error;
        } else {
            jsonData = result;
        }

    });

    return jsonData;

}).subscribe((data) => {
// ...

给出了更深入的描述和替代方法here.