Mam problemy z uzyskaniem dostępu do nieprzetworzonego xml z obiektu Builder :: XmlMarkup.TypeError: nie można przekonwertować Builder :: XmlMarkup na Array
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'
W skrypcie gdzie używam Builder do tworzenia XML, olewam @xml na stanowisko:
response = HTTParty.post(API_ENDPOINT, :body => @xml)
To daje ten sam błąd:
TypeError (can't convert Builder::XmlMarkup to Array (Builder::XmlMarkup#to_ary gives String)):
Oczywiście, jeśli zrobię @ xml.to_xml, to nie zwróci błędu, ale dodaje on do xml </to_xml>
, co oznacza, że w rzeczywistości nie konwertuje obiektu XML na xml. Nie tego chcę.
Jak mogę uzyskać dostęp do pliku xml, aby móc przekazać go do mojego posta bez dodawania dodatkowych węzłów do mojego xml?
Edit: Możliwym rozwiązaniem
Doing @xml.target!
wydaje się rozwiązać ten problem, ale nie jestem pewien, czy rozumiem dlaczego.
response = HTTParty.post(API_ENDPOINT, :body => @xml.target!)
Być może ktoś może mi pomóc zrozumieć, co się tutaj dzieje.