-1

セッション間でユーザーデータを保存する必要があります。そこで、バイナリシリアル化を使用して、データをxmlに保存することにしました。いくつかの調査の結果、いくつかのAPI、つまりJAXBとxStreamを見つけました。

xStreamのサンプルを調べたところ、気に入っています。とても簡単です。つまり、オブジェクトを指定して、このオブジェクトの.xml表現を受け取ります。xmlを読み取り、オブジェクトを受け取ります。

次に、JAXBについて読みました。これは非常に強力で機能的です。しかし、私が見つけたすべての例は、xmlスキーマの作成、このスキーマに基づいたJavaクラスの生成などに関するものです。現時点では、クラスを.xsdで記述するのに少し時間がかかるようです。これがJAXBの使用法の多くの側面の1つであることを願っています。しかし、私が見たものは、私を少し恐れました。

私のタスクに適した他のAPIはありますか?または、JAXBとxStreamの長所と短所は何ですか?

4

2 に答える 2

3

JAXB組み込みで使いやすいので、私は始めます。で始める必要はありませんXSD。クラスにいくつかの注釈を追加するだけです。

@XmlRootElement(name="doc")
public class Document {
   @XmlElement
   protected Foo foo;
   // ...
}

シリアライゼーション:

Document doc = new Document();

JAXBContext jc = JAXBContext.newInstance(Document.class);
Marshaller m = jc.createMarshaller();
m.marshal(doc, System.out);

逆シリアル化:

JAXBContext jc = JAXBContext.newInstance(Document.class);
Unmarshaller u = jc.createUnmarshaller();
Document doc = u.unmarshal(System.in);

System.outとを実際のストリームに置き換えれSystem.inば、準備完了です。

JAXB チュートリアルには、JAXB アノテーションに関する短いチュートリアルがあります。

于 2013-02-15T11:24:17.067 に答える
0

JAXB が強力すぎて、より単純なソリューションの方が優れている可能性がある場合、私は通常Castorを試します。

良い点は、単純なイントロスペクション モードをすばやく簡単に使用できることです。生成された XML をさらに制御する必要があると感じた場合は、記述子またはマッピングを追加しますが、どちらもオプションです。

于 2013-02-15T11:06:51.417 に答える