所以,我有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