2011-12-08 8 views
1

XML 파일로 저장하려는 트리로 구성 된 개체의 colection이 있지만 가능한 한 최선을 다하고 싶습니다.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

를 사용하는 나는, 그것을 할 (코드 참조)이 같은 somehing를 사용하지만 누군가가 나에게 그것을하는 더 나은 방법을 말할 수 있다면 나는 appeciate 것 @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 –