objective-c - 简单的 libxml2 HTML 解析示例,使用 Objective-c、Xcode 和 HTMLparser.h

标签 objective-c xcode html-parsing libxml2

谁能给我看一个使用 libxml 解析一些 HTML 的简单示例。

#import <libxml2/libxml/HTMLparser.h>

NSString *html = @"<ul>"
    "<li><input type=\"image\" name=\"input1\" value=\"string1value\" /></li>"
    "<li><input type=\"image\" name=\"input2\" value=\"string2value\" /></li>"
  "</ul>"
  "<span class=\"spantext\"><b>Hello World 1</b></span>"
  "<span class=\"spantext\"><b>Hello World 2</b></span>";

1) 假设我想解析名称为 input2 的输入的值。

应该输出“string2value”。

2) 假设我想解析每个 class = spantext 的 span 标签的内部内容。

应该输出:“Hello World 1”和“Hello World 2”。

最佳答案

我使用了 Ben Reeves 的 HTML Parser实现我想要的:

NSError *error = nil;
NSString *html = 
    @"<ul>"
        "<li><input type='image' name='input1' value='string1value' /></li>"
        "<li><input type='image' name='input2' value='string2value' /></li>"
    "</ul>"
    "<span class='spantext'><b>Hello World 1</b></span>"
    "<span class='spantext'><b>Hello World 2</b></span>";
HTMLParser *parser = [[HTMLParser alloc] initWithString:html error:&error];

if (error) {
    NSLog(@"Error: %@", error);
    return;
}

HTMLNode *bodyNode = [parser body];

NSArray *inputNodes = [bodyNode findChildTags:@"input"];

for (HTMLNode *inputNode in inputNodes) {
    if ([[inputNode getAttributeNamed:@"name"] isEqualToString:@"input2"]) {
        NSLog(@"%@", [inputNode getAttributeNamed:@"value"]); //Answer to first question
    }
}

NSArray *spanNodes = [bodyNode findChildTags:@"span"];

for (HTMLNode *spanNode in spanNodes) {
    if ([[spanNode getAttributeNamed:@"class"] isEqualToString:@"spantext"]) {
        NSLog(@"%@", [spanNode allContents]); //Answer to second question
    }
}

[parser release];

关于objective-c - 简单的 libxml2 HTML 解析示例,使用 Objective-c、Xcode 和 HTMLparser.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3020849/

相关文章:

ios - 自动布局不断拉伸(stretch) UIImageView

xcode - 通过 Swift/XCode 中的方法返回类型自动完成

python - 使用 BeautifulSoup 解析长 html 失败,输出已解析一半

ios - 在 iOS SDK 中创建密码摘要

java - 如何在 native 代码(Java、ObjectiveC/Swift)中读取 AsyncStorage

objective-c - 计算 union 2 MKPolygons

ios - 如何从 Firestore 将包含对象的数组获取到 Xcode 中的模型

swift - 从 Xcode 9 上传到应用商店/iTunes 连接的问题

java - 使用 Jsoup.Jar 进行 HTML 解析

python - 重定向到新的 URL 进行解析