2015-02-09 38 views
1

我曾經有這種形式;xpath如何獲取文本時,哥哥不是一個元素

<li> 
    <span>name:</span> 
    <p>Seca </p> 
</li> 

,我就是用這個XPath來獲得seca

ul/li/span[normalize-space(text())='name:']/following-sibling::p[1]/text()) 

和一切工作良好。我們沒有p這個標籤。所以我只有這個:

<li> 
    <span>name:</span> 
    Seca 
</li> 

我應該做的編輯我的代碼,以獲得seca現在好嗎?

回答

1

現在,「Seca」只是li元素的另一個孩子 - 因此是span元素的後續兄弟。使用

//ul/li/span[normalize-space(text())='name:']/following-sibling::text() 

給你

[EMPTY LINE] 
Seca 
[EMPTY LINE] 

你可能要排除那些只有空白線:

normalize-space(//ul/li/span[normalize-space(text())='name:']/following-sibling::text()) 

,其結果將是

Seca 

如果您的實際輸入包含更多文本節點,請不要忘記在表達式中添加[1]


注意,表達可能是一個容易得多,如果確實沒有理由正常化的span文本內容,並只考慮其直接子文本節點:

//ul/li[span='name:']/text()[2]