2011-06-28 38 views
1

所以,我有HTML这样的:使用XPath选择块引用文本包括<br/>

<blockquote>TEXT<br/>MORE TEXT<br/>SOME MORE TEXT</blockquote> 

基本上,我需要把所有的文字插图中的块引用标记,其中包括新线。 使用“// blockquote”只返回最后一行(SOME MORE TEXT)并使用“// blockquote/text()”将每一行作为数组中的单独项返回。

任何帮助?

回答

0

的XPath:

//blockquote 

将返回所有块引用元素,无论他们身在何处。

的XPath:

//blockquote/text() 

将返回所有块引用元素的子文本节点

的XPath:

//blockquote//node() 

将返回所有块引用元素的任何后代节点(文本或标签) ,即在你的情况下:

TEXT<br/>MORE TEXT<br/>SOME MORE TEXT 
+0

感谢您的帮助,但现在只需在数组中包含
作为“(null)”。字符串仍然是独立的,现在只有一个“(空)”项目。 – spykr

+0

我的答案与纯XPath使用有关。使用任何兼容XPath 1.0的测试仪,你会发现它是正确的。我的回答没有解决任何TFHpple XPath相关的问题。 –

+0

是的,很抱歉,使用[element content]返回(null)。 [元素名称]返回br。我想我将不得不通过数组检查名为br的元素,然后结合两个字符串前后... – spykr

0

那么你的代码行为正常。 br被解析器解释为另一个标签。

你将不得不修改您的代码是这样的(我还没有编译这个源代码):

在你- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

创建的NSMutableString *最终值;

if([elementName isEqualtoString"@"br"]) 
{ 
finalValue = [NSString stringwithformat:@"%@\n",finalValue]; 
} 

因此,基本上,当遇到br标记结束时,您必须将\ n附加到解析值。

+0

我实际上并没有使用NSXMLParser,我使用的是TFHpple类。 NSXMLParser会是个更好的主意吗? TFHpple中Xpath的代码是NSArray * array = [xpathParser search:@“// blockquote/text()”] ;. – spykr