#javascript #html #xml
#javascript #HTML #xml
Вопрос:
Я получаю ошибки при синтаксическом анализе результирующего сообщения в XML. Кто-нибудь знает почему?
Спасибо.
let program = [{"getUnixCommandResult:1":"Content-type: text/html","getUnixCommandResult:2":"","getUnixCommandResult:3":"IARM_Init group name = com.comcast.rdk.iarm.bus member name = DisplaySettingsService","getUnixCommandResult:4":"setting init doner","getUnixCommandResult:5":"Registering DisplaySettingsServicer","getUnixCommandResult:6":"<<<<< VDISP is initialized in Multi-App Mode >>>>>>>>r","getUnixCommandResult:7":"<<<<< AOP is initialized in Multi-App Mode >>>>>>>>r","getUnixCommandResult:8":"<<<<< VOP is initialized in Multi-App Mode >>>>>>>>r","getUnixCommandResult:9":"<<<<< VID is initialized in Multi-App Mode >>>>>>>>r","getUnixCommandResult:10":"dsGetVideoPort..6--1225541724","getUnixCommandResult:11":"dsGetVideoPort..5--1225541756","getUnixCommandResult:12":"[getSingleRecord:6644]-------------------------------10","getUnixCommandResult:13":"resultMessage = [{"value": [{"status": "0", "nRecording": "0", "nPreBooks": "1", "nTotal": "1", "PreScheduleData": "<?xml version=\"1.0\"?>\n<root>\n <Schedule BookId=\"10\" workingid=\"0\" channelNumber=\"011\" channelName=\"amp;#xFF2E;amp;#xFF28;amp;#xFF2B;amp;#x7DCF;amp;#x5408;amp;#xFF11;amp;#x30FB;amp;#x6771;amp;#x4EAC;\" startTime=\"1547617620000\" endTime=\"1547618400000\" onid=\"32736\" srvid=\"1024\" title=\"amp;#x30C6;amp;#x30EC;amp;#x30D3;amp;#x4F53;amp;#x64CD;amp;#x1F211;\" tsid=\"32736\" event_id=\"9552\" recCtrlData=\"2\" rating=\"0\" audioType=\"3\" nibLvl1=\"1A2\" nibLvl2=\"FF3\" description=\"amp;#x3010;amp;#x51FA;amp;#x6F14;amp;#x3011;amp;#x9234;amp;#x6728;amp;#x5927;amp;#x8F14;amp;#xFF0C;amp;#x6E05;amp;#x6C34;amp;#x6C99;amp;#x5E0C;amp;#xFF0C;amp;#x5409;amp;#x6C5F;amp;#x6674;amp;#x83DC;amp;#xFF0C;amp;#x8218;amp;#x91CE;amp;#x4F36;amp;#x5948;amp;#xFF0C;amp;#x3010;amp;#x30D4;amp;#x30A2;amp;#x30CE;amp;#x3011;amp;#x52A0;amp;#x85E4;amp;#x7531;amp;#x7F8E;amp;#x5B50;\" recMode=\"0\" record_status=\"2\" storage_type=\"1\" book_type=\"2\"/>\n <Counts Recording=\"0\" PreBooks=\"1\" Total=\"1\"/>\n</root>\n"}]}]","getUnixCommandResult:14":"term start init 1r"}]
console.log(program[0]["getUnixCommandResult:13"])
let resultMessage =program[0]["getUnixCommandResult:13"]
let indexOfSchedule = resultMessage.indexOf('PreScheduleData')
console.log(indexOfSchedule)
resultMessage = resultMessage.slice(indexOfSchedule 19)
console.log(resultMessage)
let endIndexOfSchedule = resultMessage.indexOf('Counts')
resultMessage = resultMessage.slice(0,resultMessage.length - 5)
console.log(resultMessage)
let parser = new DOMParser();
let doc = parser.parseFromString(resultMessage, "text/xml");
console.log(doc)
.as-console-wrapper { max-height: 100% !important; }
Комментарии:
1. Пожалуйста, объясните / покажите ошибки, которые вы получаете
2. И покажите нам содержимое переменной
resultMessage
в том месте, где вы пытаетесь ее разобрать.
Ответ №1:
Поскольку в вашем вводе все "
символы были заменены на "
, чтобы иметь возможность сохранить их в другой строке, это приводит к неправильным атрибутам в вашем XML.
Быстрое исправление, если ввод не может быть исправлен, состоит в разборе результирующей строки, обернутой двумя "
.
let program = [{"getUnixCommandResult:1":"Content-type: text/html","getUnixCommandResult:2":"","getUnixCommandResult:3":"IARM_Init group name = com.comcast.rdk.iarm.bus member name = DisplaySettingsService","getUnixCommandResult:4":"setting init doner","getUnixCommandResult:5":"Registering DisplaySettingsServicer","getUnixCommandResult:6":"<<<<< VDISP is initialized in Multi-App Mode >>>>>>>>r","getUnixCommandResult:7":"<<<<< AOP is initialized in Multi-App Mode >>>>>>>>r","getUnixCommandResult:8":"<<<<< VOP is initialized in Multi-App Mode >>>>>>>>r","getUnixCommandResult:9":"<<<<< VID is initialized in Multi-App Mode >>>>>>>>r","getUnixCommandResult:10":"dsGetVideoPort..6--1225541724","getUnixCommandResult:11":"dsGetVideoPort..5--1225541756","getUnixCommandResult:12":"[getSingleRecord:6644]-------------------------------10","getUnixCommandResult:13":"resultMessage = [{"value": [{"status": "0", "nRecording": "0", "nPreBooks": "1", "nTotal": "1", "PreScheduleData": "<?xml version=\"1.0\"?>\n<root>\n <Schedule BookId=\"10\" workingid=\"0\" channelNumber=\"011\" channelName=\"amp;#xFF2E;amp;#xFF28;amp;#xFF2B;amp;#x7DCF;amp;#x5408;amp;#xFF11;amp;#x30FB;amp;#x6771;amp;#x4EAC;\" startTime=\"1547617620000\" endTime=\"1547618400000\" onid=\"32736\" srvid=\"1024\" title=\"amp;#x30C6;amp;#x30EC;amp;#x30D3;amp;#x4F53;amp;#x64CD;amp;#x1F211;\" tsid=\"32736\" event_id=\"9552\" recCtrlData=\"2\" rating=\"0\" audioType=\"3\" nibLvl1=\"1A2\" nibLvl2=\"FF3\" description=\"amp;#x3010;amp;#x51FA;amp;#x6F14;amp;#x3011;amp;#x9234;amp;#x6728;amp;#x5927;amp;#x8F14;amp;#xFF0C;amp;#x6E05;amp;#x6C34;amp;#x6C99;amp;#x5E0C;amp;#xFF0C;amp;#x5409;amp;#x6C5F;amp;#x6674;amp;#x83DC;amp;#xFF0C;amp;#x8218;amp;#x91CE;amp;#x4F36;amp;#x5948;amp;#xFF0C;amp;#x3010;amp;#x30D4;amp;#x30A2;amp;#x30CE;amp;#x3011;amp;#x52A0;amp;#x85E4;amp;#x7531;amp;#x7F8E;amp;#x5B50;\" recMode=\"0\" record_status=\"2\" storage_type=\"1\" book_type=\"2\"/>\n <Counts Recording=\"0\" PreBooks=\"1\" Total=\"1\"/>\n</root>\n"}]}]","getUnixCommandResult:14":"term start init 1r"}]
let resultMessage = program[0]["getUnixCommandResult:13"];
let indexOfSchedule = resultMessage.indexOf('PreScheduleData')
resultMessage = resultMessage.slice(indexOfSchedule 19)
let endIndexOfSchedule = resultMessage.indexOf('Counts')
resultMessage = resultMessage.slice(0,resultMessage.length - 5);
resultMessage = JSON.parse('"' resultMessage '"');
console.log(resultMessage)
let parser = new DOMParser();
let doc = parser.parseFromString(resultMessage, "text/xml");
console.log( "first element channelName:",
doc.documentElement.firstElementChild.getAttribute("channelName")
);
.as-console-wrapper { max-height: 100% !important; }