微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从XSD生成Ruby类

有没有办法从XSD生成 Ruby类(甚至可能是ActiveResource类),以便它们包含一种将类序列化为xml的初始XSD有效的方法

我知道soap4r有xsd2ruby,但是看起来生成的ruby类不能轻易地序列化为xml.

解决方法

标记,

虽然这是前一段时间提到的,但我遇到了一个解决方案,并认为这可能有助于未来的人们.

我的需要是相似的.我有一个来自同事的.xsd,并希望从它生成一个文件.我的希望是,我可以轻松地编组对象并将其传递给他的RESTful终点,在那里他的Java服务器将解压缩有效负载,并动态构建对象在他身边,无需额外的努力.

我找到的解决方案是从https://github.com/rubyjedi/soap4r获取soap4r.我将bin目录中的两个* .rb文件执行,然后运行:

bin/xsd2ruby.rb --xsd <source>.xsd --classdef <filename_prefix>

这产生了一个新的文件,每个xsd:complexType被实现为一个类.所有其他复杂类型也是使用正确的继承关系生成的,并且所有xsd:element都被定义为实例变量,并且还定义了类初始化器.

运行xsd2ruby.rb本身就产生了以下选项:

~/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

为了完整起见,我将以下课程扩展到我的课程(这是一个“Prospect”课程):

class Prospect
  include Enumerable
  def each(&block)
    self.instance_variables.collect{|v| (v.gsub /@/,'').to_sym }.each(&block)
  end
end

这让我将它用作Net :: HTTP :: Post请求的正文.

对于一个免费的to_xml的问题:我没有找到它. ruby对象带有一个to_yaml和to_json开箱即用,但我没有发现任何简单的XML转换.所以它下来卷了我自己的“to_xml”.

希望这可以帮助.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐