2011-12-08 14 views
1

我有一個組織樹中對象的集合,我想將它保存爲一個XML文件,但我希望儘可能以最佳方式做到這一點。我用somehing這樣的(見代碼)做到這一點,但如果有人能告訴我這樣做的更好的方法,我會原汁原味:Java xml保護程序優化

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 


    Document doc = docBuilder.newDocument(); 
    Element rootElement = doc.createElement("company"); 
    doc.appendChild(rootElement); 


    Element staff = doc.createElement("Staff"); 
    rootElement.appendChild(staff); 


    Attr attr = doc.createAttribute("id"); 
    attr.setValue("1"); 
    staff.setAttributeNode(attr); 


    Element firstname = doc.createElement("firstname"); 
    firstname.appendChild(doc.createTextNode("yong")); 
    staff.appendChild(firstname); 


    Element lastname = doc.createElement("lastname"); 
    lastname.appendChild(doc.createTextNode("mook kim")); 
    staff.appendChild(lastname); 


    Element nickname = doc.createElement("nickname"); 
    nickname.appendChild(doc.createTextNode("mkyong")); 
    staff.appendChild(nickname); 


    Element salary = doc.createElement("salary"); 
    salary.appendChild(doc.createTextNode("100000")); 
    staff.appendChild(salary); 


    TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
    Transformer transformer = transformerFactory.newTransformer(); 
    DOMSource source = new DOMSource(doc); 
    StreamResult result = new StreamResult(new File("C:\\file.xml")); 


    transformer.transform(source, result); 

回答

3

所拍攝的答案是:使用JAXB

萬一使用它的時候,你可以在你的字段和類中放置@XmlElement之類的註釋,以便無縫地序列化/反序列化它們到XML。它會處理你的樹中的所有遞歸沒有任何問題。

+0

另請參見http://www.simpleframework.org/它的使用非常簡單。 – WeMakeSoftware

+0

對於JAXB的+1,還要注意JAXB具有將Java對象轉換爲XML的默認規則,因此您只需要在希望指定非默認映射的地方添加註釋:http://wiki.eclipse.org/EclipseLink/Examples/ MOXy/GettingStarted –

+2

@Funtik - JAXB非常簡單易用:http://blog.bdoughan.com/2010/10/how-does-jaxb-compare-to-simple.html –