簡體   English   中英

使用JAXB將Marshalled對象附加到XML文件中

[英]Append Marshalled Object Into XML File Using JAXB

我在我的項目中處理一個pojo對象的情況,並將輸出第一次寫入XML文件,然后在同一文件中追加具有不同值但相同節點和子節點的相同封送對象。 這是以下代碼 -

 **Person person = new Person(personList.get(id));**
    try {
        File file = new File("D:\\file.xml");
        JAXBContext jaxbContext = JAXBContext.newInstance(Person.class);
        Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

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

        jaxbMarshaller.marshal(person, file);
        jaxbMarshaller.marshal(person, System.out);

          } catch (JAXBException e) {
        e.printStackTrace();
      }

   Output:

     file.xml created with bellow structure -

     <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
     <person>
       <country>India</country>
       <id>1</id>
       <name>Aatif Hasan</name>
     </person>

當Person構造函數中的'id'得到更改時,下次Person對象被不同的屬性值封送時,'file.xml'文件被覆蓋,我丟失了之前的輸出。 簡單地說,每當'id'被更改時,我想要附加封送的Person對象。 即,對象屬性設置為不同的值。 恩..

     <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
     <person>
       <country>India</country>
       <id>1</id>
       <name>Aatif Hasan</name>
     </person>
     <person>
       <country>USA</country>
       <id>2</id>
       <name>ABC</name>
     </person>
     <person>
       <country>UK/country>
       <id>3</id>
       <name>XYZ</name>
     </person>
         .
         .
         .
    and so on..

請任何身體提示我如何做到這一點。 任何幫助表示贊賞。 我試圖在stackoverflow Q / A列表中搜索類似的場景,但找不到。

溫暖的問候。!!

您需要的XML格式不正確。

我建議你把所有人都包起來。

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Persons", propOrder = {
    "person"
})
@XmlRootElement(name = "Persons")
public class Persons
    implements Serializable
{

    private final static long serialVersionUID = 12343L;
    @XmlElement(name = "Person", required = true)
    protected List<Person> person;

    // getter and setter

}

輸出預期

<persons>
    <person>
       <country>India</country>
       <id>1</id>
       <name>Aatif Hasan</name>
    </person>
    <person>
       <country>USA</country>
       <id>2</id>
       <name>ABC</name>
    </person>
    <person>
       <country>UK/country>
       <id>3</id>
       <name>XYZ</name>
    </person>
</persons>

這里有任何可能的解決方案將xml附加到文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM