使用XPath:查找根节点下每个段落的最后一个文本节点

时间:2008-11-03 03:37:03

标签: html ruby xpath xhtml rexml

我想在所有XHTML段落的末尾修剪尾随空格。我正在使用Ruby和REXML库。

说我在有效的XHTML文件中有以下内容:

<p>hello <span>world</span> a </p>
<p>Hi there </p>
<p>The End </p>

我想最终得到这个:

<p>hello <span>world</span> a</p>
<p>Hi there</p>
<p>The End</p>

所以我以为我可以使用XPath来获取我想要的文本节点,然后修剪文本,这样我就可以得到我想要的内容(上一页)。

我从以下XPath开始:

//root/p/child::text()

当然,这里的问题是它返回所有p-tag子节点的文本节点。这是:

'hello '
' a '
'Hi there '
'The End '

尝试以下XPath为我提供了最后一个段落的最后一个文本节点,而不是每个段落的最后一个文本节点,它是根节点的子节点。

//root/p/child::text()[last()]

这只会返回:'The End '

我想从XPath获得的是:

' a '
'Hi there '
'The End '

我可以用XPath做到这一点吗?或者我应该考虑使用正则表达式(这可能比XPath更令人头疼)?

2 个答案:

答案 0 :(得分:7)

你的例子对我有用

//p/child::text()[last()]

答案 1 :(得分:1)

如果你不知道,XSL有一个normalize-space()函数可以摆脱前导和尾随空格。