gpt4 book ai didi

iphone - 这个解析 XHTML 的 XPath 查询是错误的吗?使用 TouchXML

转载 作者:行者123 更新时间:2023-12-03 19:02:05 25 4
gpt4 key购买 nike

我一直在尝试通过TouchXML解析XHTML文档,但它总是无法通过XPath查询找到任何标签。

下面是 XHTML:

XHTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Mac OS X (vers 25 March 2009), see www.w3.org" />
<title></title>
</head>
<body>
<p>
<a href="http://www.flickr.com/photos/55397648@N00/5987335786/"
title="casavermeer5.jpg by the style files, on Flickr">
<img src="http://farm7.static.flickr.com/6127/5987335786_abec990554_o.jpg"
width="500" height="750" border="0" alt="casavermeer5.jpg" />
</a>
</p>
</body>
</html>

所以,我们可以看到有一个“p”标签,“a”标签和“img”标签

我当时所做的如下代码所示:

CXHTMLDocument *doc = [[[CXHTMLDocument alloc] initWithXHTMLString:XHTML options:0 error:&error] autorelease];
NSLog(@"error %@", [error localizedDescription]);
NSLog(@"doc children count = %d", [doc childCount]);
NSArray *imgNodeArray = [doc nodesForXPath:@"//img" error:&error];
NSLog(@"imgNodeArray = %d", [imgNodeArray count]);
NSLog(@"error %@", [error localizedDescription]);

结果是

error (null)
doc children count = 2
imgNodeArray = 0
error (null)

因此,解析 XHTML 文档时完全没有错误,XPath 查询 也没有错误。此外,该文档在根目录下有两个子级(“body”标签和“head”标签)。但问题是它找不到“img”标签。我尝试过用其他可能的标签名称(例如 p、a,甚至 body、head)替换“img”,但没有成功。

有人可以帮我吗?

附注

实际上原始文档是一个HTML,我首先使用TouchXML lib中的CTidy类将HTML整理为XHTML。上面的 XHTML 来自 CTidy 结果。

我还尝试向 XPath 查询添加命名空间,如下所示

NSMutableDictionary *namespaceDict = [NSMutableDictionary dictionary];
[namespaceDict setValue:@"http://www.w3.org/1999/xhtml" forKey:@"xhtml"];

并将 XPath 查询更改为

NSArray *imgNodeArray = [doc nodesForXPath:@"//xhtml:img" namespaceMappings:namespaceDict error:&error];

仍然没有运气,找不到任何结果。

最佳答案

试试这个//img。当您使用 // 时,它会获取 img 标记,无论它位于页面中的哪个位置。
它比 //xhtml:img 更好 - 因为有时层次标签在后面的代码中会发生一些变化,所以最好是全局的,而不是太具体。

关于iphone - 这个解析 XHTML 的 XPath 查询是错误的吗?使用 TouchXML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7038667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com