解析器是什么:foundCharacters:方法究竟做什么?

时间:2012-03-11 16:06:35

标签: html ios nsxmlparser

我需要使用NSXmlParser解析HTML文档。如你所知,有三个主要的委托方法解析器:didStartElement ....,parser:DidEndElement:.....和parser:foundCharacters:methods。我真的不明白最后一种方法有用吗?它提供了什么解析器: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 个答案:

答案 0 :(得分:4)

在exmaple 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”。解析器:在查找<person><firstname><secondname>标记时会调用didStartElement。解析器:在查找</firstname></secondname></person>标记时会调用didEndElement。

parser:didStartElement不允许您访问XML元素中包含的值,但它确实允许您访问属性值。

因此,回到您的示例,唯一可以有效调用的委托方法是parser:didStartElementparser:didEndElement,并且作为示例中的标记是自包含的,并且仅包含子元素{{ 1}}会产生任何有用的数据。