【发布时间】:2018-11-06 05:27:19
【问题描述】:
我必须在节点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']);
})
Here are the 2 different xml, that takes as an input.
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,但仍然没有成功。
【问题讨论】: