Nsxmlparser无法检测到某些元素

问题描述:

我正在使用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

Sorted。最初,我在解析之前编码soap响应以替换'''等'&Quot;',因为我无法成功解析它,但它以某种方式在响应中添加了一些错误。

我之所以不能解析原始响应是因为它的结构复杂,现在我已经使用XMLDictionary解析原始响应以提取“tracknetaData”字符,其中“upnp:albumArtURI”是其中一个元素,然后再次使用XMLDictionary解析“trackMetaData”提取的字符。“通用即插即用:albumArtURI”

滞留2周,现在,它解决了!!!快乐