使用NSXMLParsers“找到CDATA”方法

时间:2010-11-03 06:15:56

标签: iphone xml sdk nsxmlparser cdata

我有一个看起来像这样的XML文件

<comments>
    <text>
          <![CDATA[
              <!--cached-Tue, 02 Nov 2010 17:50:50 +0000-->
              this is on the first line
              <br /> 
              This is on the second line
           ]]>  
    </text> 
    <text>
          <![CDATA[
              <!--cached-Tue, 02 Nov 2010 17:50:50 +0000-->
              this is on the first line
              <br /> 
              This is on the second line
           ]]>  
    </text> 
</comments>

如何从中提取数据(忽略评论)

我目前有。

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock 
   {    
    if(!myCDATA)
            {
            myCDATA = [[NSMutableData alloc] init];
            }   
    [myCDATA appendData:CDATABlock];
    }

然而,它似乎永远不会找到“]]&gt;”标签。当我突破它时,它只会调用foundCDATA一次。

1 个答案:

答案 0 :(得分:1)

您是否有机会在下面的行中设置断点?

myCDATA = [[NSMutableData alloc] init];

只需在if(!myCDATA)测试之前添加一个NSLog(@“”)并在其上设置一个断点,我很确定你会得到两个回调。

您不应期望解析器“找到”“]]&gt;”串。这是CDATA元素的一部分。

你也可以实现这个

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

并检查“文字”。

干杯...