过去三天我一直在这个问题上。我想将通过HTTP检索的XML转换为JSON,以便我可以在ionic 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 中将 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
然后它会正常工作。希望它对你有用
你快到了。当您从parseString
方法return
数据时出现问题。你只需要使用一个临时变量,从 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) => {
// ...
这里给出了更深入的描述和替代方法。