Angular2:将 XML 转换为 JSON

Posted

技术标签:

【中文标题】Angular2:将 XML 转换为 JSON【英文标题】:Angular2: Convert XML to JSON 【发布时间】:2017-08-07 21:01:01 【问题描述】:

我想将从 Web API 响应收到的 XML 转换为 Angular 2 中的 JSON。该应用程序是在 Nativescript 中开发的。无法找到解决方案。

【问题讨论】:

这个你试过了吗:npmjs.com/package/nativescript-xml2js ***.com/questions/36368405/… 的副本。 How to parse xml in Angular 2的可能重复 根据 Nativescript 团队的通知和实验,上述模块似乎都不能与 nativescript angular 2 一起使用。那么还有其他替代方案可以与 nativescript angular 2 一起使用吗? 奇怪,所以你查找了对 nativescript-xml2js 的支持,它说它不适用于 nativescript? 【参考方案1】:

我发现了一个很棒的包,让这变得非常简单。

xml2js

对我来说,我是在 angular 2 应用程序中执行此操作,但在节点端。

npm install xml2js --save

字面意思就是像这样传递xml,

var parseString = require('xml2js').parseString;
var xml = "<root>Hello xml2js!</root>"
parseString(xml, function (err, result) 
    console.dir(result);
);

在我的应用程序中,我有一个 xml 文件并像这样使用它,

var fs = require('fs');
var parseString = require('xml2js').parseString;

function requestCreditReport(callback) 
    fs.readFile('./credit-api/response.xml', 'utf8', function (err,data) 
        if (err) return callback(err);
        parseString(data, callback);
    );

See this jsfiddle

我希望这会有所帮助。

【讨论】:

不知何故我无法看到 parseAtring 函数中的日志。肥皂信封是我从 web api 的回应。 所以您是说您正在尝试控制台结果但它不起作用?请您在函数之外进行 console.log 测试。确保我们正在运行该文件。 console.dir 不工作,我不知道如何从中得到结果。 var parseString = require('xml2js').parseString; var xml = "Hello xml2js!" parseString(xml, function (err, result) console.dir(result); ); 试试这个,var parseString = require('xml2js').parseString; var xml = "你好 xml2js!"; var jString = parseString(xml); console.log(jString); 当我尝试使用 xml2js 模块时出现以下错误。 03-17 02:37:48.190: V/JS(7130): error ::: Error: com.tns.NativeScriptException: 找不到模块:“事件”,相对于:app/tns_modules/ 03-17 02:37 :48.190: V/JS(7130): com.tns.Module.resolvePathHelper(Module.java:159) 03-17 02:37:48.190: V/JS(7130): com.tns.Module.resolvePath(Module. java:60) 03-17 02:37:48.190: V/JS(7130): com.tns.Runtime.callJSMethodNative(Native Method)【参考方案2】:

如果您正在使用 Angular 2 进行 POST 并获取 XML 响应:使用 xml2js - https://www.npmjs.com/package/xml2js

    npm install xml2js --save

    在服务文件中导入为:

    import * as xml2js from 'xml2js';
    

    代码:

    let formdata = new URLSearchParams();
    formdata.set('username','username');
    formdata.set('pw','pw'); 
    let headers = new Headers('Content-Type': 'application/x-www-form-urlencoded' );
    
    let options = new RequestOptions( headers: headers, method: RequestMethod.Post);
    
    postData () 
    
         this.http.post(this._yourUrl, formdata.toString(), options)
         //convert to JSON here
         .map(res => 
                xml2js.parseString( res.text(), function (err, result) 
                console.dir(result); // Prints JSON object!
             );
         )
         .subscribe(data =>  
              console.log(data);              
         );
    
    

【讨论】:

【参考方案3】:
function parseXml(xmlStr) 
    var result;
    var parser = require('xml2js');
    parser.Parser().parseString(xmlStr, (e, r) => result = r);
    return result;

【讨论】:

为您的代码添加更多上下文,以帮助未来的读者更好地理解其目的。

以上是关于Angular2:将 XML 转换为 JSON的主要内容,如果未能解决你的问题,请参考以下文章

Angular2 HTTP GET - 将响应转换为完整对象

Typescript / Angular2:将 JSON 转换为与 Observable 和 JSONP 接口

Angular 2 - 使用 ngStyle 将背景图像转换为 html 文件

Angular 2:将 Observable 转换为 Promise

如何将现有的 Angular 2 Web 应用程序转换为原生脚本应用程序

Angular2将纯文本转换为url的方式(锚链接)