我已经使用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输出?
答案 0 :(得分:0)
从我记得XSD::Mapping.obj2xml
XML将使用实例的实例变量作为元素名称,将它们的值用作子元素。就这样。正如您所看到的,实例变量@__xmlattr
正在进行特殊处理。
为了解决这些限制,我写了jaxb2ruby。它基于ERB模板生成类。您可以使用其中一个内置模板(ROXML,HappyMapper或普通红宝石类)或编写自己的模板。
它并不完美,但在几个例子中对我来说效果很好。
您可能还想结帐ROAR。