2015-02-07 95 views
0

我正在使用NSXMLPARSER來解析upnp soap響應。雖然它可以檢測其委託中的某些元素,但無法檢測到其他元素。我對提取upnp:albumArtURI元素特別感興趣,但失敗了。任何人有任何想法?Nsxmlparser無法檢測到某些元素

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetPositionInfoResponse xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><Track>1</Track><TrackDuration>0:04:34</TrackDuration><TrackMetaData><DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="-1" parentID="-1" restricted="true"><res protocolInfo="sonos.com-http:*:application/ogg:*" duration="0:04:34">x-sonos-http:4823265.ogg?sid=23&amp;flags=32&amp;sn=3</res><r:streamContent></r:streamContent><upnp:albumArtURI>/getaa?s=1&amp;u=x-sonos-http:4823265.ogg?sid=23&flags=32&sn=3</upnp:albumArtURI><dc:title>明年今日</dc:title><upnp:class>object.item.audioItem.musicTrack</upnp:class><dc:creator>陳奕迅</dc:creator><upnp:album>陳奕迅 廣東精選 EASON CHAN CANTONESE COLLECTION</upnp:album></item></DIDL-Lite></TrackMetaData><TrackURI>x-sonos-http:4823265.ogg?sid=23&flags=32&sn=3</TrackURI><RelTime>0:00:06</RelTime><AbsTime>NOT_IMPLEMENTED</AbsTime><RelCount>2147483647</RelCount><AbsCount>2147483647</AbsCount></u:GetPositionInfoResponse></s:Body></s:Envelope> 
+0

這是由於!你的XML,你有一個錯誤。檢查它與一個XML驗證器找到錯誤。 – tbaranes 2015-02-07 13:16:11

+0

謝謝。 didstartelement可以檢測信封,body,getPositionInfoResponse,track,trackDuration,trackMetaData,DIDL-Lite,item&res的元素,所以不要認爲有錯誤?它只是無法檢測到其他元素......奇怪! – Ken 2015-02-07 13:41:34

+0

謝謝。我試圖捕捉錯誤,它確實有它。這是一個域23錯誤,至少現在我有一個方向,而不是卡住,不知道該怎麼辦...... – Ken 2015-02-07 15:26:49

回答

0

Sorted。最初,我在解析之前編碼soap響應以替換'''等'&Quot;',因爲我無法成功解析它,但它以某種方式在響應中添加了一些錯誤。

我之所以不能解析原始響應是因爲它的結構複雜,現在我已經使用XMLDictionary解析原始響應以提取「tracknetaData」字符,其中「upnp:albumArtURI」是其中一個元素,然後再次使用XMLDictionary解析「trackMetaData」提取的字符。「通用即插即用:albumArtURI」

滯留2周,現在,它解決了!!!快樂