2012-04-22 93 views
9

我需要用xpath解析XHTML。它看起來像這樣:帶有文本()但沒有空白的嵌套元素的XPath

<div class="foo"> 
    i need this text 
    <br/> 
    <br/> 
    <span>sometext</span> 
</div> 

<div class="foo"> 
    <span>some other text</span> 
    <span>sometext</span> 
</div> 

我要選擇具有「我需要這個文本」中的第一個div的所有內容。我的問題是,div元素包含空格或其他東西,所以// div [@ class =「foo」]/text()也返回第二個div的空字符串。我想忽略這些空白字段,我該怎麼做?

+0

有沒有做的事情,如添加[正常化空間()= 「」!]在您的查詢的幫助結束了嗎? – Steve 2012-04-22 22:52:19

回答

13

使用

//div 
    [.//text() 
     [normalize-space() = 'i need this text'] 
    ] 
    //text()[normalize-space()] 

這將選擇任何div的任何非空白僅文本節點的後代在文檔中,該(所述div)具有一個文本節點的後代,其歸一化的字符串的值是字符串"i need this text"

normalize-space()函數採用一個串(上下文節點的字符串值 - 如果未指定參數),並從它產生另一個字符串中的所有前導和尾部空格都將被刪除,以及任何內組的相鄰的空白字符被替換爲一個空格。

-1

試試這個選擇:

//span[@class='glyphicon glyphicon-list mr5']/..[contains(normalize-space(text()),'Applications')]

+0

請添加一些文字。 – 2015-10-30 07:58:14

相關問題