17

Java では、JAXB2 をよく使用します。Object<->XML マッピングは、Java クラスの注釈として定義されます。

@XmlRootElement(name="usertask", namespace="urn:test")
public class UserTask
{
    @XmlElement(namespace="urn:test")
    public String getAssignee() { ... }

    public void setAssignee(String assignee) { ... }
}

JAXB ランタイムは、これらの注釈を読み取り、アンマーシャラーを作成して、XML をオブジェクト インスタンスに解析したり、オブジェクトを XML にマーシャリングしたりできます。

JAXB には、XML スキーマから注釈付きクラスを生成できるスキーマ コンパイラ (XJC) が付属しています。これは、もう 1 つの優れた機能です。


最近、私たちはクライアントサイドの JavaScript を使って多くの作業を行っています。そこでも XML 処理が必要です。たとえば、このような WPS ドキュメントを解析する必要があります。これらのドキュメントは異なる XML スキーマにも準拠しています (サンプル XMLの WPS 1.0.0 スキーマはこちら)。XML の代わりに JavaScript オブジェクトを使用するのは素晴らしいことです。これにより、非常に多くの労力が節約されます。DWRのような JSON ベースのソリューションを使用できる場合もありますが、多くの場合、クライアント側で XML を処理する必要があります。

私の質問は:

JavaScript 用の JAXB の類似物はありますか?

XML スキーマを XML<-> オブジェクト マッピングにコンパイルし、XML オブジェクトと JavaScript オブジェクトを変換するランタイムを提供するツールはありますか?

次のような形式で生成されたマッピングを簡単に想像できます。

UserTask = new JSXML.XmlRootElement({
  name: "usertask",
  namespace: "urn:test",
  properties: [
    {
      assignee: new JSXML.XmlElement({
        name: "assignee",
        namespace: "urn:test",
        type: new JSXML.XSD.String()
      })
    }
  ]
});

そして、これはアンマーシャラーまたはマーシャラーを構築するのに十分なはずです。

4

4 に答える 4

29

今日まで、必要なものに似たものは何も見つかりませんでした。したがって、私はそれを自分で実装することにしました。プロジェクトページは次のとおりです。

http://confluence.highsource.org/display/MISC/Jsonix

プロジェクトは GitHub でホストされています。

https://github.com/highsource/jsonix/

于 2010-10-27T11:17:12.353 に答える
3

私はこれを試していないので、うまくいくかどうかはわかりませんが、GWT を使用して、JAXB を引き続き使用し、アプリ全体を Java アプリとして記述できるようにすることを検討しましたか? GWT が JAXB をサポートしているかどうかはわかりませんが (おそらくサポートしていない可能性があります)、サポートされる xml 解析の代替手段があるかもしれません。これが機能する場合は、gwt を介して JavaScript モデルの作成を自動化し、これらをアプリに含めることができます。はい、それはあなたが望むよりもはるかに粗雑ですが、ゼロから書かなければならないよりはましです。

于 2010-10-28T20:32:14.030 に答える
2

できることは、一般的なスタイルシート定義: XSLT を XML に追加して、それらを JSON に変換することです。例: http://code.google.com/p/xml2json-xslt/

Javascript で XML を処理するのは、JSON に比べて面倒です。特にクロス ブラウザーです。
スタイルシートは、リクエストにわずかなオーバーヘッドを追加します。サーバー側またはクライアント側のいずれかを選択できますが、これをコードの複雑さと比較して、さまざまなブラウザーで Javascript を使用して XML を解析および読み取る必要があります。

于 2010-09-29T07:14:17.307 に答える
0

JAXB の JSON サポートはどうですか? 現在の JAXB アノテーション付きモデル クラスを再利用しますが、REST エンドポイントから JSON を出力します。

Jerseyの現在のバージョンは、 JSONJAXBContextを使用して ( jersey-jsonモジュールを介して) これをサポートしています。

JacksonJAXBおよびJAX-RSサポートを試すこともできます。

于 2011-01-29T21:46:50.463 に答える