0

我的代码:

require 'rexml/document'
require 'xpath'

doc = REXML::Document.new(xml)
XPath.each(doc, "*/categoryName") { |element| puts element.text }

我正在尝试获取对象 xml,其中 xml 是一个 xml 字符串......并检索一些文本,即 - 我想要这个文本

我认为上面的代码可以工作,但它给了我以下错误:

undefined method `each' for XPath:Module
4

2 回答 2

1

我不确定您正在加载什么“xpath”库,但您不想要或不需要它。令人困惑的是,REXML 的文档假定您已经通过include REXML. 由于您没有这样做,因此您需要提供模块的完整路径:

require 'rexml/document'
doc = REXML::Document.new(xml)
REXML::XPath.each( doc, "*/category"){ |el| puts el.text }
于 2013-06-26T19:32:59.933 回答
0

我想你错过了require rexml/xpath尝试REXML::XPath.each。它会起作用的。

require 'rexml/document'
require 'rexml/xpath'
doc = REXML::Document.new(xml)
REXML::XPath.each( doc, "*/category") { |element| puts element.text }

一个例子:

require 'rexml/document'
require 'rexml/xpath'

doc = REXML::Document.new("<p>some text <b>this is bold!</b> more text</p>")
REXML::XPath.each(doc, "*//b") { |element| puts element.text }
# >> this is bold!
于 2013-06-26T19:32:20.150 回答