XPATH之normalize-space(.)和normalize-space(text())区别
normalize,字面意思就是正规化,加上space大概意思就是空格的处理了。
官方解释是这样的:
通过去掉前导和尾随空白并使用单个空格替换一系列空白字符,使空白标准化。如果省略了该参数,上下文节点的字符串值将标准化并返回。
.
是当前节点。如果在需要字符串的地方使用它(例如作为参数normalize-space()
),引擎会自动将节点转换为节点的字符串值,对于元素来说,该元素是元素内连接的所有文本节点。
text()
另一方面仅选择作为当前节点的直接子节点的文本节点。
例如,给定XML:
<a>Foo
<b>Bar</b>
lish
</a>
假设<a>
是你当前的节点,normalize-space(.)
将返回Foo Bar lish
,但normalize-space(text())
会失败,因为text()
返回两个文本节点(Foo
和lish
)的节点集,它normalize-space()
不接受。
长话短说,如果你想标准化一个元素中的所有文本,请使用.
。如果要选择特定的文本节点,请使用text()
,但请始终记住尽管名称不同,但会text()
返回一个节点集,如果节点集只有一个元素,它将自动转换为字符串。
---------------------------------------------------------------------------------
关注微信公众号即可在手机上查阅,并可接收更多测试分享~