Nokogiri xpath 표현식에서 어떻게 concat()을 사용할 수 있습니까?Nokogiri 및 concat()
xml.xpath("concat(/root/a/text(), /root/b/text())")
하지만 그 실패 : 나는 시도했습니다. ""사실
ArgumentError: node_set must be a Nokogiri::XML::NodeSet
노코 기리가 시작 만 XPath 식을 받아들이는 것 같다
xml.xpath(".concat(/root/a/text(), /root/b/text())")
xml.xpath("/concat(/root/a/text(), /root/b/text())")
xml.xpath("/concat('foo', 'bar')")
그러나 그들은 모두이 오류와 함께 실패 : 또는 "/", 그래서 나는 이러한 시도
나는 노코 기리가 libxml2를 기반으로 알고 같은 그것의 XPath 1.0 구현 만. 그러나 concat()는 XPath 1.0의 일부입니다. 그러나 XPath는 2.0에서 유사한 기능은 (문자열 조인) 나는 그것에게 기회를 주었다 이Nokogiri::XML::XPath::SyntaxError: Invalid expression: /concat('foo', 'bar')
xml.xpath("string-join('foo', 'bar')")
오류 메시지 :
RuntimeError: xmlXPathCompOpEval: function string-join not found
참조, 그것은 CONCAT에 대한보다 다른 오류 메시지의를(). 그래서 적어도 concat() 함수가 발견되었습니다.
Nokogiri::XML::XPath::SyntaxError: Invalid number of arguments: concat()
(CONCAT를 얻을 가능성은) 인수 작업 : 그것은 어떻게 든 작동 할 수 있다는 또 하나의 힌트
xml.xpath("concat()")
... 예상되는 오류 메시지를 반환 ...인가?
P.S. : xml.xpath("/root/a/text()")
과 같은 기본 xpath 표현식이 정상적으로 작동합니다.
문제의 전체 예제를 제공 할 수 있습니까? 'concat'이있는 XPath는 괜찮습니다. Nokogiri가 다른 것을 기대하는 곳에서 결과를 사용하고있는 것 같습니다. – matt