我从服务中收到xml形式的响应,我使用nsxmlparser解析。 在一个实例中,我收到了一个xml,其中两个标签中的内容相同。(重复项目如下面的xml)
收到Xml:
<UserGeneratedContentItem>
<link
rel="details"
uri="http://api.test.no/test.Ugc/vivo/usergeneratedcontentitem/16046" />
<Data><![CDATA[<Type>Note</Type><Description>**6000 characters**</Description><Page>6</Page><ChapterNumber>1</ChapterNumber><ChapterTitle>Etikk og filosofi</ChapterTitle><Uri>http://api.test.no/test.Ugc/vivo/usergeneratedcontentitem/6</Uri><Data><StickyNotes><StickyNote name="icon_2" X="215.8" Y="352.7" note="**6000 characters**" dateTime="null" popupX="940" popupY="119" popupWidth="300" popupHeight="180" formatedDate ="2012-12-28-18-20-47" iconImage="1003"/></StickyNotes></Data>]]></Data>
</UserGeneratedContentItem>
<UserGeneratedContentItem>
<link
rel="details"
uri="http://api.test.no/test.Ugc/vivo/usergeneratedcontentitem/16046" />
<Data><![CDATA[<Type>Note</Type><Description>**6000 characters**</Description><Page>6</Page><ChapterNumber>1</ChapterNumber><ChapterTitle>Etikk og filosofi</ChapterTitle><Uri>http://api.test.no/test.Ugc/vivo/usergeneratedcontentitem/6</Uri><Data><StickyNotes><StickyNote name="icon_2" X="215.8" Y="352.7" note="**6000 characters**" dateTime="null" popupX="940" popupY="119" popupWidth="300" popupHeight="180" formatedDate ="2012-12-28-18-20-47" iconImage="1003"/></StickyNotes></Data>]]></Data>
</UserGeneratedContentItem>
6000个字符包括字母,算术和&amp;一般标点符号将被编码。
习题:
In - (void)解析器:(NSXMLParser *)解析器foundCDATA:(NSData *)CDATABlock CDATABlock 变量中的方法内容在两种情况下都不相同(两个标签)。在一个实例中它给了我所有6000个字符,而在另一个实例中它给了我很少的可能是大约300个字符。文本在我确认的两种情况下(6000个字符)相同。
可能是什么原因?有人帮助我可能是像我这样早些时候遇到过这样问题的人。
提前Tnx.Plz让我知道是否有不清楚或不理解的事情。
答案 0 :(得分:1)
那就是cdata的用途 - 它不应该被解析
CDATA - (未分析)字符数据
src:http://www.w3schools.com/xml/xml_cdata.asp
应该解析PCDATA
你必须保存NSData的块(可能被称为N次,所以你必须连接那些东西)和 - 在你的情况下 - 然后将结果解析为单独的XML
答案 1 :(得分:0)
只需调用以下函数以及其他NSXMLParser函数即可。然后它将开始照顾CDATA块。
-(void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
{
NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
}
你可以NSLog someString,它会显示CDATA块的内容。