过去三天我一直在讨论这个问题。我想将通过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)
});
}
}
答案 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.