에 실제로 매우 놀랄 것 솔루션에 더 가까워 질수록 서비스에 더 많은 문제가 발생할 수 있습니다. 나는 (불행하게도)이 배에 타고 있었기 때문에 배운 것을 쓰고있다.
일반적으로 서비스가 복잡하거나 추악한 XML을 기대할 때 ActiveResource를 통해 서비스를 처리하는 것이 다소 어려웠습니다. 이러한 경우 필자의 솔루션은 필연적으로 create (POST) 또는 update (PUT)가 내부적으로 객체의 to_xml을 호출하여 데이터를 XML로 직렬화해야하므로 객체의 to_xml 메서드를 재정의해야합니다. 이 방법은 루비의 XML 빌더를 사용하거나 더 까다로운 작업을 위해 'here document'를 사용할 수도 있습니다. 결론은 정확히을 알고 서비스가 기대하는 바가 있다고 생각합니다. 서비스에 전달할 구조를 구축해야합니다. '여기에 문서가'비우호적 인 XML 구조를 강제로 사용 예를 들어
:
class User << ActiveResource::Base
def to_xml
xml =<<-EOS
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<platform_user>
<user xsi:type="userData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<userId>#{self.id}</userId>
<userName>#{self.name}</userName>
<addresses>
<address>
<address1>#{self.address1}</address1>
<addressZip>#{self.zip}</addressZip>
</address>
</addresses>
</user>
</platform_user>
EOS
xml.gsub(/\n|\t|\r/,"").strip #clean it up.
end
end
또한 그것이 예를 들어, 구조 작업 XML 작성기를 사용할 수 있습니다
def to_xml
xml = Builder::XmlMarkup.new()
xml.instruct! :xml, :version => "1.0", :encoding => "UTF-8", :standalone=>"yes"
xml.platform_user do
xml.user do
xml.userId self.id
...
end
end
end
행운을 빕니다 .