2011-09-08 97 views
0

我正在嘗試使用Simple XML framework(根據Loose object mapping tutorial)將聯繫人列表寫入XML文件。我想是這樣的如何在追加模式下編寫XML文件

<ContactsList> 
    <Contact id="1"> 
     <name>John Doe</name> 
     <address>Somewhere</address> 
    </Contact> 
    <Contact id="2"> 
     <name>Homer Simpson</name> 
     <address>Somewhere</address> 
    </Contact> 
    <Contact id="3"> 
     <name>Flash McQueen</name> 
     <address>Somewhere</address> 
    </Contact> 
</ContactsList> 

這是我Contact.java

public class Contact { 
    @Attribute(name = "id") 
    public int id;  

    @Element(name="Nom")     
    String name;   

    public void setName(String name) { 
     this.name = name; 
    } 

    public void setId(int id){ 
     this.id = id; 
    } 
} 

這就是我如何做呼籲所有聯繫人

Serializer serializer = new Persister(); 
ContentResolver cr = c.getContentResolver(); 
Cursor cu = cr.query(URI, null, null, null, null); 

taille = cu.getCount();   
if (taille > 0) {        
// Loop over all contacts 
Contact [] contact = new Contact[taille]; 
int k = 0; 
while (cu.moveToNext()) { 
    name = cu.getString(cu.getColumnIndex(DNAME)); 
    id = cu.getString(cu.getColumnIndex(ID)); 

    contact[k] = new Contact(); 
    contact[k].setName(name); 
    contact[k].setId(id);   
    serializer.write(contact[k], xmlFile); 
    k++; 
    } 
} 

的問題是,我只得到最後一次聯繫人存儲,似乎在循環播放時文件正在被壓縮。我現在正在尋找一種在追加模式下編寫xmlFile的方法。我找不到用serializer.write方法在追加模式下寫入的方法。或者有更好的方法去做我想做的事情?

+0

缺少一段代碼:你從哪裏得到對象序列化程序? –

+0

儘管我不知道這是否是您遇到的問題,但我認爲XML文檔應該只有一個根元素。 – Mike

+0

@Giuseppe你是什麼意思? 'Serializer serializer = new Persister();'就在'contentResolver'調用之前。我編輯了第一篇文章。 –

回答

0

我建議你使用需要用於你的目的的java庫。
請記住,我使用獨立的Java應用程序,所以你必須檢查是否有可行的Android編程。
一般來講,有幾種方法可以瀏覽和/或編寫XML,Java有3層不同的方法(我知道):DOM librariy,SAX庫,STAX
如果文檔,這不是太長的Dom適合你的目的,否則使用薩克斯或stax是面向事件的庫指示使用較少的內存(因爲你正在開發的移動設備,我猜這是更好)。
希望它有幫助