对于从xsd2ruby生成的ruby类,如何使用obj2xml生成属性?

时间:2015-11-04 02:29:03

标签: ruby xml xsd soap4r

我已经使用soap4r提供的实用程序xsd2ruby实用程序从XSD架构定义文件生成所需的类。这很好用,但是当我尝试使用XSD :: Mapping.obj2xml生成一个xml文件时,属性不会像我期望的那样被创建(或者想要)。我想要以下内容:

  <obj attr1=value1 attr2=value2>
    <element1>value</element1>
  </obj>

但这是生成的内容:

 <obj>
    <__xmlattr>
      <item>
        <key>
          <name>attr1</name>
          <namespace></namespace>
          <source></source>
        </key>
        <value>value1</value>
      </item>
      <item>
        <key>
          <name>attr2</name>
          <namespace></namespace>
          <source></source>
        </key>
        <value>value2</value>
      </item>
    </__xmlattr>
    <element1>value</element1>
  </obj>

如何在没有xmlattr的情况下生成XML输出?

1 个答案:

答案 0 :(得分:0)

从我记得XSD::Mapping.obj2xml XML将使用实例的实例变量作为元素名称,将它们的值用作子元素。就这样。正如您所看到的,实例变量@__xmlattr正在进行特殊处理。

为了解决这些限制,我写了jaxb2ruby。它基于ERB模板生成类。您可以使用其中一个内置模板(ROXMLHappyMapper或普通红宝石类)或编写自己的模板。

它并不完美,但在几个例子中对我来说效果很好。

您可能还想结帐ROAR