3

我需要在 HTML 文档中搜索可可中的两个特定文本字符串。我正在使用网页创建一个 NSXMLDocument:Page Example 然后我尝试在其中搜索应用程序标题和图标的 url。我目前正在使用此代码来搜索特定的字符串:

NSString *xpathQueryStringTitle = @"//div[@id='desktopContentBlockId']/div[@id='content']/div[@class='padder']/div[@id='title' @class='intro has-gcbadge']/h1";
NSString *xpathQueryStringIcon = @"//div[@id='desktopContentBlockId']/div[@id='content']/div[@class='padder']/div[@id='left-stack']/div[@class='lockup product application']/a";
NSArray *titleItemsNodes = [document nodesForXPath:xpathQueryStringTitle error:&error];
if (error)
    {
        [[NSAlert alertWithError:error] runModal];
        return;
    }
error = nil;
NSArray *iconItemsNodes = [document nodesForXPath:xpathQueryStringIcon error:&error];
    if (error)
    {
        [[NSAlert alertWithError:error] runModal];
        return;
    }

当我尝试搜索这些字符串时,我收到错误消息:“XQueryError:3 -”invalid token (@) - ./*/div[@id='desktopContentBlockId']/div[@id='content']/div [@class='padder']/div[@id='title' @class='intro has-gcbadge']/h1" at line:1"

我松散地遵循本教程

我也试过这个没有xPath中的所有@符号,它也返回一个错误。对于 xPath,我的语法显然是错误的。这条路径的基本语法是什么。我已经看到很多带有基本 XML 树的示例,但不是 html。

4

2 回答 2

2

我怀疑这是你要测试两个属性的那部分

/div[@id='title' @class='intro has-gcbadge']/h1";

尝试将其更改为:

/div[@id='title'][@class='intro has-gcbadge']/h1";
于 2011-11-08T19:48:51.870 回答
0

OP的其他问题(来自评论):

但我需要修改返回的字符串。对于第一个字符串,我得到 "<h1>App Title</h1>,我会添加什么来获取里面的文本 <h1>

使用

/div[@id='title' and @class='intro has-gcbadge']/h1/text()

或使用:

string(/div[@id='title' and @class='intro has-gcbadge']/h1)

在第二个字符串上,我得到了完整的我将<img width="111" src="link">如何从src标签返回链接的值?

使用

YorSecond-Not-Shown-Expression/@src

或使用:

string(YorSecond-Not-Shown-Expression/@src)
于 2011-11-09T05:12:23.263 回答