我正在使用NSXMLPARSER来解析upnp soap响应。虽然它可以检测其委托中的某些元素,但它无法检测到其他元素。我对提取upnp:albumArtURI元素特别感兴趣,但失败了。任何人都有任何想法?
<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&flags=32&sn=3</res><r:streamContent></r:streamContent><upnp:albumArtURI>/getaa?s=1&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 :(得分:0)
排序。最初,我编写了肥皂响应以取代'&amp; Quot;'在解析之前使用'“'等,因为我无法成功解析它,但它以某种方式在响应中添加了一些错误。
我无法成功解析原始响应的原因是因为它结构复杂。现在我使用XMLDictionary首先解析原始响应以提取“trackMetaData”字符,其中“upnp:albumArtURI”是其中一个元素,然后再次使用XMLDictionary来解析“trackMetaData”以提取“upnp:”的字符: albumArtURI”。
坚持了2个星期,现在已经解决了!快乐!