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 に答える