我如何使用 LibXml 2.2 (Objective C) 返回 HTML 文件中的所有超链接

发布于 2024-12-19 01:22:12 字数 44 浏览 0 评论 0原文

我想返回 html 中的所有超链接。 XPath 查询是什么?(目标 C)

i want to return all the hyperlinks in a html. what would be the XPath Query that ?(Objective C)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冰雪之触 2024-12-26 01:22:12

您可以使用下一个示例来完成您的任务。

NSData *data = [inputString dataUsingEncoding:NSUTF8StringEncoding];    
xmlDocPtr doc = xmlReadMemory([data bytes], [data length], "", NULL, XML_PARSE_RECOVER);

xmlXPathContextPtr xpathCtx = xmlXPathNewContext(doc);
xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression(BAD_CAST("//a"), xpathCtx);

if (xpathObj && xpathObj->nodesetval) {
    for (int i = 0; i < xpathObj->nodesetval->nodeNr; ++i) {
        xmlNodePtr node = xpathObj->nodesetval->nodeTab[i];
        xmlChar *hrefProp = xmlGetProp(node, BAD_CAST("href");
        xmlChar *content = xmlNodeGetContent(node);

        NSString *hrefString = [NSString stringWithUTF8String:(char *)hrefProp];
        NSString *contentString = [NSString stringWithUTF8String:(char *)content];
        xmlFree(hrefProp);
        xmlFree(content);

        NSLog(@"Anchor %@, Content: %@", hrefString, contentString);
}
xmlXPathFreeContext(xpathCtx);
xmlXPathFreeObject(xpathObj);
xmlFreeDoc(doc);

要设置 libxml2,请仔细阅读 设置您的项目文件
您也可以从网站下载工作示例并编译。

You can use next sample for your task

NSData *data = [inputString dataUsingEncoding:NSUTF8StringEncoding];    
xmlDocPtr doc = xmlReadMemory([data bytes], [data length], "", NULL, XML_PARSE_RECOVER);

xmlXPathContextPtr xpathCtx = xmlXPathNewContext(doc);
xmlXPathObjectPtr xpathObj = xmlXPathEvalExpression(BAD_CAST("//a"), xpathCtx);

if (xpathObj && xpathObj->nodesetval) {
    for (int i = 0; i < xpathObj->nodesetval->nodeNr; ++i) {
        xmlNodePtr node = xpathObj->nodesetval->nodeTab[i];
        xmlChar *hrefProp = xmlGetProp(node, BAD_CAST("href");
        xmlChar *content = xmlNodeGetContent(node);

        NSString *hrefString = [NSString stringWithUTF8String:(char *)hrefProp];
        NSString *contentString = [NSString stringWithUTF8String:(char *)content];
        xmlFree(hrefProp);
        xmlFree(content);

        NSLog(@"Anchor %@, Content: %@", hrefString, contentString);
}
xmlXPathFreeContext(xpathCtx);
xmlXPathFreeObject(xpathObj);
xmlFreeDoc(doc);

For setting up libxml2 read carefully section Setting up your project file.
Also you can download working sample from site and compile.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文