【问题标题】:How to accept different xml formats in node express api?node express api中如何接受不同的xml格式?
【发布时间】: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,但仍然没有成功。

【问题讨论】:

    标签: arrays node.js xml api


    【解决方案1】:

    您只需要添加一些简单的if 条件来限制对无效数组索引的访问:

    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
    
      if (arr_data['ps0:tfg'] &&
          arr_data['ps0:tfg']['ps0:header']) {
        console.log("xml 1:" + arr_data['ps0:tfg']['ps0:header']['ps1:messageid']);
      }
    
      if (arr_data['ps1:hls'] &&
          arr_data['ps1:hls']['ps1:header']) {
        console.log("xml 2:" + arr_data['ps1:hls']['ps1:header']['ps1:messageid']);
      }
    })
    

    另外,我注意到您的 xml 似乎格式不正确,您以不正确的方式混合 ps0, ps1, ns0, ns1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 2021-10-17
      • 2021-04-08
      • 2023-01-30
      相关资源
      最近更新 更多