我需要使用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的这一部分,我将使用这三种方法中的哪一种?谢谢。
答案 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:didStartElement
和parser:didEndElement
,并且作为示例中的标记是自包含的,并且仅包含子元素{{ 1}}会产生任何有用的数据。