6

我在从 Builder::XmlMarkup 对象访问原始 xml 时遇到问题。

irb> xml = Builder::XmlMarkup.new(:target => '')
=> <pretty_inspect/>

irb> xml.foo("bar")
=> "<pretty_inspect/><foo>bar</foo>"

irb> puts xml
TypeError: can't convert Builder::XmlMarkup to Array (Builder::XmlMarkup#to_ary gives String)
from (pry):122:in `puts'

在我使用 Builder 创建 XML 的脚本中,我将 @xml 传递给 POST:

  response = HTTParty.post(API_ENDPOINT, :body => @xml)

这给出了相同的错误:

TypeError (can't convert Builder::XmlMarkup to Array (Builder::XmlMarkup#to_ary gives String)):

当然,如果我执行@xml.to_xml,它不会返回错误,但会添加</to_xml>到 xml,这意味着它实际上并没有将 XML 对象转换为 xml。那不是我想要的。

那么我怎样才能获得对 xml 的访问权限,以便我可以将它传递给我的帖子,而不会给我的 xml 添加额外的节点呢?

编辑:可能的解决方案

这样做@xml.target!似乎可以解决问题,但我不确定我理解为什么。

response = HTTParty.post(API_ENDPOINT, :body => @xml.target!)

也许有人可以帮助我了解这里发生了什么。

4

1 回答 1

1

使用

puts xml

正在输出 Builder::XmlMarkup 对象,因此给出错误

使用

puts xml.target!

输出当前的 xml 字符串,这就是你想要的

于 2015-05-11T09:51:51.223 回答