1

構造を記述する JAXB で XML を解析する必要があります。たとえば、次のようになります。

<structure name="s1">
 <integer value="15" name="i1" />
 <structure name="s1_1">
   <string value="hello" />
 </structure>
</structure>

ご覧のとおり、構造は入れ子にすることができます。だから私の質問は:

  1. Javaでそのような構造を表現するためのベストプラクティスは何ですか?
  2. JAXBを使用してどのように解析できますか?

UPD: 構造体にはいくつかの異なるアイテム (整数、文字列、浮動小数点数、配列など) を含めることができ、その内容について推測することはできません。考えられるフィールドのタイプは知っていますが、数量や順序は知りません。

4

2 に答える 2

0

どうですか:

class Structure
{
    String name;
    Integer value;
    Structure child;
    // or 
    Set<Structure> children;
}

JAXBでの解析は、上記のクラスでJAXBツールを使用することにかなりなり、適切なスタブ/プロキシなどを生成し、適切なXMLをマーシャラーにフィードします。SOやその他の場所には多くの例があります。

乾杯、

于 2012-10-15T13:20:58.537 に答える
0

クラスを作成しますStructure。JAXB アノテーションを使用してマークします。

@XmlRootElement(name = "structure")
public class Structure {
    @XmlElement(name = "integer")
    private IntegerValue integer;
    @XmlElement(name = "string")
    private StringValue string;

    // add default constructor, getters and setters
}

int と string をラップして を使用するクラスIntegerValueとを作成します。StringValue@XmlAttribute

これで、JAXB でこれを使用する準備が整いました。

これは、オブジェクトを XML にシリアル化する方法の例です。

Structure s = new Structure();
//...............
JAXBContext ctx = JAXBContext.newInstance("com.yourcompany.yourpackage");
ctx.createMarshaller().marshal(s, System.out);

デシリアライズするには、 を使用しますUnmarshaller

于 2012-10-15T13:21:42.197 に答える