0

XML ドキュメントを解析し、それらの XML ドキュメントに含まれるデータを処理するために、Spring バッチを使用します。

以下のような書類があります。

<rootDoc>
  <group id="13001L000001" box="13000B000001" operator="jsmith">
    <mail numMail="3A06049714560"/>
    <mail numMail="3A06049714561"/>
    <mail numMail="3A06049714562"/>
    <mail numMail="3A06049714565"/>
  </group>
  <group id="13001L000002" box="13000B000001" operator="jsmith">
    <mail numMail="3A06049714570"/>
    <mail numMail="3A06049714571"/>
    <mail numMail="3A06049714572"/>
    <mail numMail="3A06049714575"/>
  </group>
</rootDoc>

group理想的には、ドキュメントごとに のコレクションを取得し、グループごとに のmailコレクションを取得できるようにしたい

その目的で XStream を使用する方法がわかりません... XStream でやりたいことを達成することは可能ですか、それとも JaxB が必要ですか?

4

2 に答える 2

1

XStreamは「最も簡単な」私見です。基本的に、ドキュメントをマップし、XStream構成を使用してドキュメントを解析する一連のPOJOをすばやく構築できます。たとえば、rootDoc の場合。

import java.io.Serializable;
import java.util.List;

public class Root implements Serializable {

private List<Group> groups;

//setters and getters...

}

グループのために

import java.io.Serializable;
import java.util.List;

public class Group implements Serializable {

private String id;

private String box;

private String operator;

private List<Mail> mailItems;

//setters and getters...

}

メールアイテムの場合

import java.io.Serializable;

public class Mail implements Serializable {

private String numMail;

//setters and getters...

}

このオブジェクトの XStream をセットアップするには、次の構成を使用できます

    XStream xstream = new XStream(new StaxDriver());
    xstream.alias("mail", Mail.class);
    xstream.useAttributeFor(Mail.class,"numMail");
    xstream.alias("group", Group.class);
    xstream.useAttributeFor(Group.class, "box");
    xstream.useAttributeFor(Group.class, "id");
    xstream.useAttributeFor(Group.class, "operator");
    xstream.addImplicitCollection(Group.class, "mailItems");
    xstream.alias("rootDoc", Root.class);
    xstream.addImplicitCollection(Root.class, "groups");

そしてそれを使って文書を読む

Root result = (Root) xstream.fromXML(...source);

親オブジェクトと同じようにルート POJO を使用して、対応するグループとメール アイテムを取得できるようになりました。

于 2013-01-04T16:17:27.263 に答える
0

XStream は主に xml のマーシャリングとアンマーシャリングに使用されます。XML を Java オブジェクトにアンマーシャリングし、これらのオブジェクトを実行してタスクを実行することができます。

データに「反応」したい場合は、さまざまなタグに反応する sax/stax リーダーを使用することをお勧めします。

JaxB について言及されているため、XStream とほとんど同じことを行います。経験上、私は XStream の方が操作しやすいと思います。ただし、違いについて詳しく知りたい場合は、次の投稿を参照してください: http://www.stackoverflow.com/questions/4230499/java-to-xml-conversionsあなたに関連します。

于 2013-01-03T14:17:15.177 に答える