-3

HTML 内のすべてのハイパーリンクを返したい。その XPath クエリは何でしょうか?(Objective C)

4

1 に答える 1

0

次のサンプルをタスクに使用できます

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 の設定については、「プロジェクト ファイルの設定」セクションをよくお読みください。また、サイトから動作サンプルをダウンロードしてコンパイルすることもできます。

于 2011-11-29T06:38:53.007 に答える