【问题标题】:How to get elements of html,xml by hpple ( xpath )?如何通过 hpple ( xpath ) 获取 html,xml 的元素?
【发布时间】:2011-09-01 11:15:44
【问题描述】:

请使用 hpple(xpath),这是我之前问题的后续:

http://stackoverflow.com/questions/6723244/iphone-how-to-select-this-label

如何获取seekVideo(number) 中的号码?例如:

<a href="#" class="transcriptLink" onclick="seekVideo(2000); return false;"

我想得到“2000”。

我试过了:

NSArray *elements = [xpathParser search:@"//div[@id='transcriptText']/div/p/number(substring-before(substring-after(@onclick, '('), ')'))"];

但这是不对的。我该怎么做?

如果有人可以使用名为 hpple(xpath) 的代码框架,那就太好了。

这是我获取文本的代码,现在如何更改获取数字?????

  #define WebSite @"http://www.ted.com/talks/matt_cutts_try_something_new_for_30_days.html"

- (void)setLoadData
{
    NSData *siteData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:WebSite]];



    TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:siteData];
    NSArray *elements = [xpathParser search:@"//div[@id='transcriptText']/div/p/a[number(substring-before(substring-after(@onclick, '('), ')')) >2000]/text()"];

    NSMutableArray *arr = [[NSMutableArray alloc] init];

    for (TFHppleElement *element in elements) 
    {

        NSString *strs = [element content];
        NSLog(@"cc: %@", strs);
        [arr addObject:strs];
        NSLog(@"arr: %@", arr);

    }
    self.listData = arr;
    [arr release];
    [xpathParser release];
}

【问题讨论】:

  • 好问题,+1。有关问题的解释以及计算结果为所需数字的正确 XPath 表达式,请参阅我的答案。

标签: iphone html xml xpath hpple


【解决方案1】:

我试过了:

     NSArray *elements = [xpathParser
 search:@"//div[@id='transcriptText']/div/p/number(substring-before(substring-after(@onclick,
 '('), ')'))"]; 

但这是不对的。我该怎么办?

在 XPath 1.0 中,将函数调用作为定位步骤在语法上是非法的

试试:

substring-before(substring-after(.../a/@onclick, 'seekVideo('), 
                 ')'
                 )

或者试试:

number(
       substring-before(substring-after(.../a/@onclick, 'seekVideo('), 
                        ')'
                        )
       )

其中... 必须替换为选择a 的父级的XPath 表达式。

【讨论】:

  • 你能给我真正的代码“where ... 必须替换为选择 a 的父级的 XPath 表达式。”
  • @libai:我使用了“...”,因为您没有提供任何要在其上评估 XPath 表达式的 XML 文档。 必须提供它。如果你不理解这个非常基本的事实,那么你就是在浪费许多读者的时间——当然也是在浪费你的时间。请编辑您的问题,提供您想要使用的 XML 文档(最好使用最小的文档),然后在评论中通知我。在那之前我什么都做不了。记住——我们不是千里眼……
  • 谢谢,我的问题改了,等你帮忙?
  • 我的第一个 html 项目,所以需要更多细节帮助
猜你喜欢
  • 2020-07-19
  • 1970-01-01
  • 2020-04-26
  • 2020-08-14
  • 2021-02-13
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2018-04-12
相关资源
最近更新 更多