繁体   English   中英

如何在Node JS API中处理多个不同格式的XML有效负载

[英]How to handle multiple different format xml payloads in the node js api

我必须根据需要执行相应操作定义的值,在节点api中接受不同类型的xml格式。

这是我正在尝试的代码:

var xmlparser = require('express-xml-bodyparser');
    app.post('/xmlparser',xmlparser({trim: false, explicitArray: false}),function(request,reply){
    var data = JSON.stringify(request.body);
    var arr_data =JSON.parse(data);
    //code to access and display values from the xml

    console.log("xml 1:"+arr_data['ps0:tfg']['ps0:header']['ps1:messageid']);
    console.log("xml 2:"+arr_data['ps1:hls']['ps1:header']['ps1:messageid']);
})

这是输入的2个不同的xml。

xml 1:
        <?xml version="1.0" encoding="UTF-8"?>
    <ps0:TFG xmlns:ns0="http://www.google.com/LOGO/Common">
    <ps0:Header version="1.0" xmlns:ns1="http://www.google.com/LOGO/Common">
    <ps1:MessageId>MESSAGE001</ns1:MessageId>
    </ps0:Header>
    </ns0:TFG>

xml 2:    
    <?xml version="1.0" encoding="UTF-8"?>
    <ps0:HLS xmlns:ns0="http://www.google.com/LOGO/Common">
    <ps0:Header version="1.0" xmlns:ns1="http://www.google.com/LOGO/Common">
    <ps1:MessageId>MESSAGE001</ns1:MessageId>
    </ps0:Header>
    </ps0:HLS>

如果我通过xml 1,则xml 1可以正常打印,因此我接受与上述代码相同的不同格式。 如果我将xml 2作为输入传递,则由于索引不可用,执行将在第一控制台日志处停止。

我们如何处理这种情况?

为了解决这个问题,我需要保留一些条件,如果至少显示未定义,那么我可以在条件中标记,如果索引不匹配,则问题代码不会执行。

更新:我也尝试过实现try catch,但是还是没有运气。

问题可能源于XML和Javascript / JSON都区分大小写的事实。

例如,

const c = { alpha: 42 };
console.log(c.alpha) // ---> 42
console.log(c.Alpha) // ---> undefined

同样,在XML中, <ns1:MESSAGEID><ns1:MessageId>是不同的标记。

您用来解析XML的任何软件包都可能会弄乱这种情况,但是对我来说,这似乎极不可能-任何不符合标准的软件包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM