Mark
Mimo to został poproszony jakiś czas temu natknąłem się na rozwiązania i że może to pomóc ludzie w przyszłości.
Moja potrzeba była podobna. Mam plik .xsd od kolegi i chciałbym wygenerować z niego plik klasy. Mam nadzieję, że będę w stanie w prosty sposób przeprowadzić akcję i przekazać obiekt do jego punktu końcowego, gdzie jego serwer Java roześle ładunek i dynamicznie zbuduje obiekt po jego stronie bez dodatkowego wysiłku.
Rozwiązaniem, które znalazłem, było pobranie soap4r
z https://github.com/rubyjedi/soap4r. Zrobiłem dwa pliki * .rb w pliku wykonywalnego bin a następnie prowadził:
bin/xsd2ruby.rb --xsd <source>.xsd --classdef <filename_prefix>
Ten wygenerowany nowy plik z każdym z xsd:complexType
realizowanego jako klasa. Wszystkie inne typy złożone zostały również wygenerowane z prawidłowymi relacjami dziedziczenia, a wszystkie xsd:element
zdefiniowano jako zmienną instancji i zdefiniowano również inicjator klasy.
Running xsd2ruby.rb
sama dała opcje:
~/src/test/soap4r:bin/xsd2ruby.rb
Usage: bin/xsd2ruby.rb --xsd xsd_location [options]
xsd_location: filename or URL
Example:
bin/xsd2ruby.rb --xsd myapp.xsd --classdef foo
Options:
--xsd xsd_location
--classdef [filenameprefix]
--mapping_registry
--mapper
--module_path [Module::Path::Name]
--force
--quiet
w trosce o kompletność, I przedłużony mój klasy z następujących (jest to klasa "Prospect"):
class Prospect
include Enumerable
def each(&block)
self.instance_variables.collect{|v| (v.gsub /@/, '').to_sym }.each(&block)
end
end
ten pozwól mi wykorzystać go jako treść żądania Net::HTTP::Post
.
Na pytanie o darmowe to_xml
: Nie znalazłem tego. Rubinowy obiekt jest dostarczany wraz z to_yaml
i to_json
po wyjęciu z pudełka, ale nie znalazłem żadnej prostej konwersji do XML. Tak więc doszło do rzucenia własnego "to_xml".
Mam nadzieję, że to pomoże.
Istnieje sposób serializowania obiektów klasy activerecord do xml. Ale nie sądzę, że szukasz czegoś podobnego. – Chirantan