加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

从XSD生成Ruby类

发布时间:2020-12-16 21:54:10 所属栏目:百科 来源:网络整理
导读:有没有办法从XSD生成 Ruby类(甚至可能是ActiveResource类),以便它们包含一种将类序列化为xml的初始XSD有效的方法? 我知道soap4r有xsd2ruby,但是看起来生成的ruby类不能轻易地序列化为xml. 解决方法 标记, 虽然这是前一段时间提到的,但我遇到了一个解决方案,
有没有办法从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”.

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读