Как обрабатывать несколько различных форматов xml полезных нагрузок в узле js api - PullRequest
0 голосов
/ 05 ноября 2018

Я должен принять различные типы форматов xml в узле api, основываясь на значении, которое необходимо выполнить для соответствующих операций.

Вот код, который я пытаюсь:

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']);
})

Вот два разных 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, но все еще не повезло.

1 Ответ

0 голосов
/ 05 ноября 2018

Проблема, вероятно, связана с тем, что и XML, и Javascript / JSON чувствительны к регистру.

Например,

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

Аналогично, в XML <ns1:MESSAGEID> не совпадает с тегом <ns1:MessageId>.

Возможно, что любой пакет, который вы используете для разбора вашего XML, возиться с кейсом, но для меня это маловероятно - любой пакет, который не соответствует стандартам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...