0

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 出力を生成するにはどうすればよいですか?

4

1 に答える 1

0

私の記憶ではXSD::Mapping.obj2xml、XML はインスタンスのインスタンス変数を要素名として使用し、その値を子要素として使用します。それで全部です。ご覧のとおり、インスタンス変数@__xmlattrで特別な処理が行われます。

これらの制限を回避するために、私はjaxb2rubyを書きました。ERB テンプレートに基づいてクラスを生成します。組み込みのテンプレート ( ROXMLHappyMapper、または単純な ruby​​ クラス) のいずれかを使用するか、独自のテンプレートを作成できます。

完璧ではありませんが、いくつかの例でうまくいきました。

ROARをチェックアウトすることもできます。

于 2015-11-06T06:19:57.653 に答える