0

次のようなコードがあります。

    Person person1 = new Person();
    person1.setName("abc");
    person1.setAge(23);

    Person person2 = new Person();
    person2.setName("xyz");
    person2.setAge(32);

そして、xml ファイルで次のように再表現する必要があります。

   <Person>
       <person1>
           <name>abc</name>
           <age>23</age>
       </person1>
       <person2>
           <name>abc</name>
           <age>23</age>
       </person2>
   </Person>

どうすればいいのですか?

4

5 に答える 5

2

Java-xml バインディングを探していると思います。JAXB バインディングとマーシャリングを行うことができます。サンプルについては、リンク http://www.mkyong.com/java/jaxb-hello-world-example/を確認してください。

于 2012-09-28T22:36:03.710 に答える
2

リンクのコードをチェックアウトして、自分のコードに実装しました。コードは次のとおりです。1 つのオブジェクトに対してのみ xml データを書き込むことができ、ループすると最後のオブジェクトだけが書き込まれます。そのため、ファイルを追加モードで使用しようとすると、機能が停止しました:

try {
    FileOutputStream file = new FileOutputStream("file.xml", true);
    JAXBContext jaxbContext = JAXBContext.newInstance(NeuronNode.class);
    Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

    // output pretty printed
    jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);


    for(int i=0; i<neuronNodes.length; i++)
    {
        jaxbMarshaller.marshal(neuronNodes[i], file);
        jaxbMarshaller.marshal(neuronNodes[i], System.out);
    }

} catch (JAXBException e | IOException e) {
    e.printStackTrace();
}
于 2012-09-28T23:49:11.710 に答える
1

Serialization と XML-Parser (DOM など) を使用することもできます。XML ドキュメントを作成する場合は、クエリに XPath を使用できます。

http://simple.sourceforge.net/の使用も検討します

于 2012-09-28T22:33:51.290 に答える
0

私はこれにXStreamを何度も使用しました。

于 2012-09-28T22:31:15.877 に答える