2012-11-20 108 views
0

我可以在如何使xpath匹配空格?

<br> 
sometext 
<br> 
othertext 

使用XPath選擇器匹配sometextothertext '// BR /以下同胞::文本()'

但如果只有空白的<br>元件後

<br> 

<br> 
othertext 

只發生第二次匹配。是否有可能匹配空格?

我試圖

//br/following-sibling::matches(., "\s+") 

嘗試沒有成功匹配的空白。

回答

0

「匹配」是匹配正則表達式,不匹配節點。它不能與軸說明符一起使用。你可以使用它像條件:

//br/following-sibling::text()[matches(., "\s+")] 

或者沒有regexs(可能會更快取決於實現),檢查是否是所有空白,而不是空字符串:

//br/following-sibling::text()[(normalize-space(.) = "") and (. != "")] 
+0

我有一些麻煩得到這個工作。我嘗試使用'// BR /以下同胞::文本()[匹配(。, 「\ S +」)]''上
SDFS

sdfd

'沒有結果。我注意到,如果我嘗試了'// br/following-sibling :: text()[matches(。,「\ s +」)] | // br/following-sibling :: text()'儘管'// br/following-sibling :: text()'確實在'sdfd'上找到了一個匹配,這也不能產生匹配,一些使用match()的語法問題。 '// br/following-sibling :: text()[(normalize-space(。)eq「」)和(。ne「」)]'同​​樣沒有匹配。 – jela

+0

你在哪個程序中使用它?匹配只存在於XPath 2中。並且您的示例不是有效的xml,因此它需要某種類型的html解析器 – BeniBela

+0

我正在使用PHP 5.3.8版本的Xpath。它似乎沒有有效的XML工作,但[這個問題](http://stackoverflow.com/questions/11023160/how-do-i-update-the-version-of-xpath-in-php)表明, m使用1.0,並且沒有辦法解決這個問題。有XPath 1方式解決我的問題嗎? – jela