2011-12-08 15 views
1

私はXMLファイルとして保存したいツリーで整理されたオブジェクトの集合を持っていますが、私はできる限りこれを最適にしたいと考えています。私はそれを行うには(コードを参照)、このようsomehingを使用し、誰かが私にそれを行うためのより良い方法を言うことができる場合、私はappeciateう:Java xml saverの最適化

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

+1 JAXBの場合、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 –