2014-02-07 39 views
-1

我想獲取一個ArrayList的內容並將它們放入一個XML文件中。有沒有人有一個快速,乾淨和簡單的解決方案,而不是必須使用流和處理異常?ArrayList到XML

欲瞭解更多信息,這裏是我目前我遇到的問題,其中一個不創建文件的代碼。

package ie.wit.io; 

import ie.wit.abs.Device; 
import ie.wit.abs.Device; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.List; 

import javax.swing.JOptionPane; 

public class FileHandler 
{ 
    private FileOutputStream outByteStream; 
    private ObjectOutputStream OOStream; 
    private FileInputStream inByteStream; 
    private ObjectInputStream OIStream; 
    private File aFile; 

    public void setUpFile() 
    { 

     aFile = new File("data.xml"); 

    } 

    public boolean isFileEmpty() 
    { 
     return (aFile.length() <= 0); 
    } 





    public void writeToFile(ArrayList<Device> team) 
    { 
    try 
    { 

     outByteStream = new FileOutputStream(aFile); 
     OOStream = new ObjectOutputStream(outByteStream); 

     OOStream.writeObject(team); 

     outByteStream.close(); 
     OOStream.close(); 
    } 
    catch(IOException e) 
    { 
     JOptionPane.showMessageDialog(null,"I/O Error" + e + "\nPlease Contact your Administrator :-)"); 
    } 
    } 

currentClass) 
    public ArrayList<Device> readFromFile() 
    { 
     ArrayList<Device> temp = null; 

    try 
    { 
     inByteStream = new FileInputStream(aFile); 
     OIStream = new ObjectInputStream(inByteStream); 

     if(!this.isFileEmpty()) 
      temp = (ArrayList<Device>)OIStream.readObject(); 

     inByteStream.close(); 
     OIStream.close(); 
    } 
    catch(IOException e) 
    { 
     JOptionPane.showMessageDialog(null,"I/O Error" + e + "\nPlease Contact your Administrator :-)"); 
    } 

    catch(Exception e) 
    { 
     JOptionPane.showMessageDialog(null,"General Error" + e + "\nPlease Contact your Administrator :-)"); 
    } 

    return temp; 
    } 
} 
+0

恐怕你將不得不使用流。 – ltalhouarne

回答

0

您可以使用StringBuilder並自己生成XML ..這取決於您想要轉換的項目數。最快的方法是使用StringBuilder推出XML數據。

+0

這也取決於你的物品有多複雜。如果你有複雜的項目,代碼可能變得很難維護。 –

1

有很多圖書館來完成這項任務。

這是我到目前爲止所做的。根據您的要求編輯。

protected String getDocmentsAsString(List<News> documentsListByIndex) { 
     if(documentsListByIndex.size()>0){ 
     try { 
      XStream xstream = new XStream(new JsonHierarchicalStreamDriver()); 
      xstream.setMode(XStream.NO_REFERENCES); 
      xstream.alias("news", News.class); 
      return xstream.toXML(documentsListByIndex); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     } 
     return null; 
    } 

進出口使用http://x-stream.github.io/json-tutorial.html

+0

我把代碼我到目前爲止在問題中。 – user2175076