的兄弟文本節點:XPath查找這是由於以下列出的HTML片段其他節點
<fieldset>
<legend>My Legend</legend>
<p>Some text</p>
Text to capture
</fieldset>
是否有一個XPath表達式將僅返回「文字捕獲」文本節點?
嘗試
/fieldset/text()會產生三個節點,而不僅僅是我需要的節點。
的兄弟文本節點:XPath查找這是由於以下列出的HTML片段其他節點
<fieldset>
<legend>My Legend</legend>
<p>Some text</p>
Text to capture
</fieldset>
是否有一個XPath表達式將僅返回「文字捕獲」文本節點?
嘗試
/fieldset/text()會產生三個節點,而不僅僅是我需要的節點。
假設你想要的是一個包含非空白文本的文本節點:
//fieldset/text()[normalize-space(.)]
如果你想要的是最後一個文本節點,則:
//fieldset/text()[last()]
我建議你接受史蒂芬D. Majewski的答案,但這裏是解釋(用方括號加亮的文本節點):
<fieldset>[
]<legend>My Legend</legend>[
]<p>Some text</p>[
Text to capture
]</fieldset>
所以/fieldset/text()
返回
"\n "
"\n "
"\n Text to capture\n"
這就是爲什麼你要/fieldset/text()[normalize-space()]
,並且要在使用前修整的結果。
另請注意,以上是/fieldset/text()[normalize-space(.) != '']
的簡稱。當normalize-space()
返回非空字符串時,謂詞評估爲true
,而空字符串評估爲false
。
''.'對於'normalize-space()'是可選的,當給定它的參數沒有對上下文節點進行操作時。 – Tomalak 2010-04-21 17:42:58