Reputation: 1
I'm getting errors parsing the result message to XML. Does anyone knows why?
Thank you.
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 done\r","getUnixCommandResult:5":"Registering DisplaySettingsService\r","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=\\\"NHK総合1・東京\\\" startTime=\\\"1547617620000\\\" endTime=\\\"1547618400000\\\" onid=\\\"32736\\\" srvid=\\\"1024\\\" title=\\\"テレビ体操🈑\\\" tsid=\\\"32736\\\" event_id=\\\"9552\\\" recCtrlData=\\\"2\\\" rating=\\\"0\\\" audioType=\\\"3\\\" nibLvl1=\\\"1A2\\\" nibLvl2=\\\"FF3\\\" description=\\\"【出演】鈴木大輔,清水沙希,吉江晴菜,舘野伶奈,【ピアノ】加藤由美子\\\" 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 1\r"}]
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; }
Upvotes: 0
Views: 92
Reputation: 137171
Because in your input all "
characters have been replaced by \"
to be able to store it in an other string, this makes for incorrect attributes in your XML.
A quick fix if the input can't be fixed, consists in parsing the resulting string, wrapped by two "
.
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 done\r","getUnixCommandResult:5":"Registering DisplaySettingsService\r","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=\\\"NHK総合1・東京\\\" startTime=\\\"1547617620000\\\" endTime=\\\"1547618400000\\\" onid=\\\"32736\\\" srvid=\\\"1024\\\" title=\\\"テレビ体操🈑\\\" tsid=\\\"32736\\\" event_id=\\\"9552\\\" recCtrlData=\\\"2\\\" rating=\\\"0\\\" audioType=\\\"3\\\" nibLvl1=\\\"1A2\\\" nibLvl2=\\\"FF3\\\" description=\\\"【出演】鈴木大輔,清水沙希,吉江晴菜,舘野伶奈,【ピアノ】加藤由美子\\\" 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 1\r"}]
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; }
Upvotes: 1