Я должен принять различные типы форматов 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, но все еще не повезло.