[英]Why can't I parse 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 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; }
因為在您的輸入中,所有"
字符都已替換為\\"
以便能夠將其存儲在其他字符串中,所以這會導致 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 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; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.