如何在Nokogiri xpath表达式中使用concat()?我已经试过:Nokogiri和concat()
xml.xpath("concat(/root/a/text(), /root/b/text())")
但是失败: “”
ArgumentError: node_set must be a Nokogiri::XML::NodeSet
其实好像引入nokogiri接受与只启动XPath表达式或“/”,所以我尝试了这些:
xml.xpath(".concat(/root/a/text(), /root/b/text())")
xml.xpath("/concat(/root/a/text(), /root/b/text())")
xml.xpath("/concat('foo', 'bar')")
但他们都失败,此错误:
Nokogiri::XML::XPath::SyntaxError: Invalid expression: /concat('foo', 'bar')
我知道引入nokogiri是基于libxml2的,因此它仅实现的XPath 1.0。但是concat()是XPath 1.0的一部分。但是,XPath 2.0中的类似功能是字符串连接(),我给它一个机会:
xml.xpath("string-join('foo', 'bar')")
错误消息:
RuntimeError: xmlXPathCompOpEval: function string-join not found
见,它比一个CONCAT不同的错误信息()。所以至少找到函数concat()。还有一个暗示,它可能以某种方式工作是...
xml.xpath("concat()")
...返回预期的错误消息:
Nokogiri::XML::XPath::SyntaxError: Invalid number of arguments: concat()
任何机会得到CONCAT()带参数的工作?
P.S .:像xml.xpath("/root/a/text()")
一样的基本xpath表达式正常工作。
你能提供一个完整的问题例子吗?带'concat'的XPath对我来说工作正常,我怀疑你正在使用Nokogiri期望的其他地方的结果。 – matt