2011-06-28 55 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