在iOS中使用Xpath查找P标记内的所有元素

时间:2011-06-28 17:55:59

标签: xpath

我真的不认为这个问题的iOS部分真的太重要了,但我只是想我会添加这部分只是为了安全。我正在尝试通过一些HTML解析一个App(客户端想要解析HTML而不是使用Web View),我正在使用我从另一个问题中找到的hpple代码以及用于搜索的XPath格式。我对Xpath很满意,从来没有真正使用它,但我开始理解它,但我一直试图获得HTML的一部分(我能够搜索并找到我需要的其他所有内容)。从源HTML文件中我需要提取的内容包含在ap标记中,但在p标记内也可能有其他几个节点(例如href',em,br“等)。整个p标记我want也包含在div类中,我试图看看我是否可以在div类之下以及p中提取所有元素但是到目前为止我似乎无法得到我需要的东西。下面是一个快速了解HTML的外观。

<div class='post'><p> This is some sample text that also includes a <a href="www.link.com">Sample Link</a> and also some <em>formatted</em> text.<p><p> A New line may also be present</p></div>

所以我真正需要得到的是div类中的所有<p>标签,因为在某些情况下可能会有更多。我在最近的尝试中尝试了//div[@class='body']/p[text()],但这也没有用,只是从帖子中拉了一段时间。

一旦我得到了所有内容,我想将整个帖子转换为将在App中使用的NSString,但是一旦我得到XPath搜索格式正确,我就能在我的那个上做很多事情。谢谢。

编辑: 这是我用来首先执行Xpath搜索然后将结果转换为字符串的iOS中的代码。也许在这里,我做错了什么。

NSArray *foundPosts = [xpathParser search:@"//div[@class='post']//p//node()"];
TFHppleElement *postelement = [foundPosts objectAtIndex:0];
NSString *Posts = [postelement content];

1 个答案:

答案 0 :(得分:4)

XPath:

//div[@class='post']//p

将返回任何p标记下的所有后代div元素,其中属性class等于“post”。

XPath

//div[@class='post']//p//node()

将返回特定p的所有后代div标记下的所有后代节点(文本和元素)。