0

Java アプリケーション用に作成した XML からモデル クラスを作成したいと考えています。私が書いているXMLから自動生成されたクラスを変換するための良いツールは何ですか? 私の XML ファイルからのサンプル。

  <list name="NameValuePairListDefinition">
    <member target="NameValuePair" />
  </list>

  <structure name="PositiveIntegerList">
    <member name="list" target="PositiveIntegerListDefinition" />
  </structure>
4

1 に答える 1

2

Java を使用していて、クラスを生成したい場合は、XMLbeansを使用することを強くお勧めします。次のようないくつかの優れたユーティリティが付属しています。

  • inst2xsd : xml を指定すると、xsd が生成されます

    inst2xsd -enumerations never message.xml

    (xsd ファイルを生成し、同じタイプの列挙を無効にします)

  • scomp : スキーマをjarファイルにコンパイルします。つまり、スキーマの名前空間に基づいた (またはnoNamespace.somethingで始まる)クラス (または複数のクラス) を含む、非常に優れた再利用可能なライブラリが生成されます。 XML で any を定義する

    scomp -jar yourschema mySchema.xsd

    (これにより、必要なjarであるxmltypes.jarが作成されます。名前を巧妙なものに変更し、値の取得と設定、読み取りと書き込みの双方向解析に使用します)

  • 最後に、Java IDE を起動し、 scompによって作成されたスキーマ用のすべての xmlbeans JARS および JAR を追加します。

その後、xmldata をプロジェクト内の Java オブジェクトとしてロード、作成、保存、操作できます;-)

に基づく小さな XML スニペットの要素です。大まかに次のようなコードでアクセスします。

 MyModel myModel = null;
 try {
    //full path to XML file
    File modelXML = new File("Model.xml");

    // Bind the incoming XML to an XMLBeans type.
    myModel = MyModel.Factory.parse(modelXML);
 } 
 catch (XmlException e) { e.printStackTrace(); } 
 catch (IOException e) { e.printStackTrace(); }
 catch (FileNotFoundException e) { e.printStackTrace();  }

 // Using the <structure> element.
 Structure structure = myModel.getStructure();
 Member member = structure.getMember();
 String target = member.getTarget(); // "PositiveIntegerListDefinition" 

注: また、 listなどの予約済みの Java キーワードではない要素名を使用することをお勧めします。XMLBeans がそれをどのように処理するかは正確にはわかりませんが、オーバーロードするのではなく、名前を少し変更することになると思います。

これは便利な完全なチュートリアルです: http://xmlbeans.apache.org/documentation/tutorial_getstarted.html

単純な直接 XML 呼び出しまたは REST ベースの Web サービスを使用していると仮定しましたが、SOAP のようなより詳細なものを使用する場合は、SOAP XML メッセージまたは WSDL から Java クラスを簡単に生成できるApache CXFおよびApache Axis2もあります。

于 2012-10-31T02:11:00.393 に答える