我正在从XHTML中检索所有文本:
//p/text()
工作正常,但它们都是一个接一个地没有任何分隔符。我想在它们之间添加一个空格。我正在尝试:
//p/concat(text(), " ")
没有运气:
XPath error : Invalid expression
//p/concat(text(), " ")
^
我正在使用xmllint版本20902
答案 0 :(得分:3)
XPath实际上是用于选择,而不是操纵。除了选择文本以将其排列为所选项目之间的间距之外,您还可以从单纯的选择到操作。 对于操作,请考虑使用XSLT而不仅仅是XPath。
也就是说,如果你能使用XPath 2.0(通过另一个工具 - xmllint只支持XPath 1.0),你可以通过string-join()
将所选字符串连接在一起:
string-join(//p/text(), ' ')
但请注意,//p/text()
会遗漏div
,span
等文字。也许您的意思是//*/text()
或//text()
?另请注意,即使在XPath 1.0中,您也可以通过string(/)
获取所有文本,但这并不能满足您添加空格的需求。