CData未被NSXmlparser解析

时间:2012-12-28 14:09:53

标签: ios ipad xml-parsing nsxmlparser cdata

我从服务中收到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让我知道是否有不清楚或不理解的事情。

2 个答案:

答案 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块的内容。

相关问题