Я пытался проанализировать XHTML
документ с помощью TouchXML
, но он всегда не может найти теги с помощью XPath query
.
Ниже приведен 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 query
нет ошибок.Также у этого документа есть два дочерних элемента под корнем (тег "body" и тег "head").Но проблема в том, что он не может найти тег "img".Я пытался заменить «img» другими возможными именами тегов (такими как p, a, даже body, head), но безуспешно.
Может ли кто-нибудь помочь мне здесь?
PS
На самом деле исходный документ представляет собой HTML, я использовал класс CTidy в библиотеке TouchXML, чтобы сначала привести 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];
Все еще не повезло, не могу найти никаких результатов.