所以,我有HTML这样的:使用XPath选择块引用文本包括<br/>
<blockquote>TEXT<br/>MORE TEXT<br/>SOME MORE TEXT</blockquote>
基本上,我需要把所有的文字插图中的块引用标记,其中包括新线。 使用“// blockquote”只返回最后一行(SOME MORE TEXT)并使用“// blockquote/text()”将每一行作为数组中的单独项返回。
任何帮助?
所以,我有HTML这样的:使用XPath选择块引用文本包括<br/>
<blockquote>TEXT<br/>MORE TEXT<br/>SOME MORE TEXT</blockquote>
基本上,我需要把所有的文字插图中的块引用标记,其中包括新线。 使用“// blockquote”只返回最后一行(SOME MORE TEXT)并使用“// blockquote/text()”将每一行作为数组中的单独项返回。
任何帮助?
的XPath:
//blockquote
将返回所有块引用元素,无论他们身在何处。
的XPath:
//blockquote/text()
将返回所有块引用元素的子文本节点
的XPath:
//blockquote//node()
将返回所有块引用元素的任何后代节点(文本或标签) ,即在你的情况下:
TEXT<br/>MORE TEXT<br/>SOME MORE TEXT
那么你的代码行为正常。 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附加到解析值。
我实际上并没有使用NSXMLParser,我使用的是TFHpple类。 NSXMLParser会是个更好的主意吗? TFHpple中Xpath的代码是NSArray * array = [xpathParser search:@“// blockquote/text()”] ;. – spykr
感谢您的帮助,但现在只需在数组中包含
作为“(null)”。字符串仍然是独立的,现在只有一个“(空)”项目。 – spykr
我的答案与纯XPath使用有关。使用任何兼容XPath 1.0的测试仪,你会发现它是正确的。我的回答没有解决任何TFHpple XPath相关的问题。 –
是的,很抱歉,使用[element content]返回(null)。 [元素名称]返回br。我想我将不得不通过数组检查名为br的元素,然后结合两个字符串前后... – spykr