Используя NSXMLParsers метод "найдено CDATA" - PullRequest
0 голосов
/ 03 ноября 2010

У меня есть 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];
    }

Однако, похоже, он никогда не найдет тег "]]>". Когда я ломаю точку, она только однажды вызывает CDATA.

1 Ответ

1 голос
/ 03 ноября 2010

Вы случайно устанавливаете эту точку останова в строке ниже?

myCDATA = [[NSMutableData alloc] init];

Просто добавьте NSLog (@ "") перед тестом if (! MyCDATA) и установите для него точку останова, и я уверен, что вы получите два обратных вызова.

Вы не должны ожидать, что парсер "найдет" строку "]]>". Это часть элемента CDATA.

Вы также можете реализовать это

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

и проверьте «текст».

Приветствия ...

...