2012-09-18 2 views
6

Builder :: XmlMarkup 개체에서 원시 XML에 액세스하는 데 문제가 있습니다. 나는 XML을 생성하는 빌더를 사용하고 스크립트에서 TypeError : Builder :: XmlMarkup을 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' 

, 나는 POST에 @xml을 전달 해요 :

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

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

이 같은 오류를 제공합니다

물론 @ xml.to_xml을 사용하면 오류를 반환하지 않지만 </to_xml>을 XML에 추가합니다. 즉 XML 객체를 xml로 실제로 변환하지 않습니다. 그건 내가 원하는 것이 아니야.

그렇다면 xml에 대한 액세스 권한을 얻으면 XML에 여분의 노드를 추가하지 않고도 내 게시물에 전달할 수 있습니까?

편집 : 가능한 솔루션 @xml.target!이 문제를 해결하는 것,하지만 난 이유를 이해 확실하지 않다 이렇게

.

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

아마도 누군가 여기에서 무슨 일이 일어나고 있는지 이해할 수 있습니다.

puts xml 

를 사용

답변

0

:: XmlMarkup 개체를 빌더를 출력 따라서

puts xml.target! 

를 사용하여 오류

을 제공한다하면

를 원하는 것입니다 현재 XML 문자열을 출력한다
관련 문제