Что именно делает parser: foundCharacters: метод? - PullRequest
0 голосов
/ 11 марта 2012

Мне нужно проанализировать HTML-документ с помощью NSXmlParser. Как вы знаете, есть три основных метода синтаксического анализа делегата: didStartElement ...., анализатор: DidEndElement: ..... и анализатор: foundCharacters: методы.Я действительно не могу понять, как последний метод полезен?Что он предоставляет этому анализатору: didStartElement: .. метод не делает. Допустим, у меня есть следующий фрагмент HTML-документа:

<img src="http://eurovision.az/attachments/news/main_images/
 b_a71309d9c34df72adbbb29d506bc5034.jpg" alt=""
rel="http://eurovision.az/attachments/news/main_images/
t_a71309d9c34df72adbbb29d506bc5034.jpg" title="#htmlcaption1" />

Теперь, чтобы проанализировать эту часть HTML, в какой момент я быиспользовать какой из этих трех методов?Спасибо вперед.

1 Ответ

4 голосов
/ 11 марта 2012

В приведенном вами HTML-коде метод parser:foundCharacters не очень полезен. Это потому, что он читает символы в части значения элемента XML / XHTML.

Итак, учитывая следующий XML:

<person><firstname>bon</firstname><secondname>joydell</secondname></person>

И следующий почти-код:

NSMutableString *everythingString = [NSMutableString string];

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {

    [everythingString appendString:string];
}

Тогда everythingString будет содержать "bonjoydell". parser: didStartElement вызывается при поиске тегов <person>, <firstname> и <secondname>. parser: didEndElement будет вызываться при поиске тегов </firstname>, </secondname> и </person>.

parser:didStartElement не дает вам доступа к значениям, содержащимся в элементах XML, но дает доступ к значениям атрибутов.

Итак, вернемся к вашему примеру, единственные методы-делегаты, которые были бы с пользой вызваны, это parser:didStartElement и parser:didEndElement, и, будучи тегом в вашем примере, самодостаточен и не имеет только дочерних элементов, parser:didStartElement даст любой полезные данные.

...