我在从 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!)
也许有人可以帮助我了解这里发生了什么。