2012-09-13 2 views
0

아래 코드를 사용하고 있습니다. 그러나 코드를 실행할 때 다른 TXT 파일에 새로운 XML을 추가하려고합니다. JDOM을 사용하여 가능합니다. Pls 도와주세요 ..JDOM을 사용하여 기존 파일에 데이터 추가

xmlOutput.output (doc, new FileWriter ("c : \ updated.txt"))); 수정해야 할 것이 있습니까?

import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import org.jdom2.Document; 
import org.jdom2.Element; 
import org.jdom2.JDOMException; 
import org.jdom2.input.SAXBuilder; 
import org.jdom2.output.Format; 
import org.jdom2.output.XMLOutputter; 

public class Replacer { 
    public static void main(String[] args) { 
      try { 

      SAXBuilder builder = new SAXBuilder(); 
      File xmlFile = new File("c:\\file.xml"); 
      String temp = "1234567"; 

      Document doc = (Document) builder.build(xmlFile); 
      Element rootNode = doc.getRootElement(); 

      System.out.println("Root Node is --> "+rootNode); 

      Element ShipmentLines = rootNode.getChild("ShipmentLines"); 

      Element ShipmentLine = ShipmentLines.getChild("ShipmentLine"); 

      Element Containers = rootNode.getChild("Containers"); 

      Element Container = Containers.getChild("Container"); 


      ShipmentLine.getAttribute("OrderNo").setValue(temp); 


      Container.getAttribute("ContainerScm").setValue(temp); 

      XMLOutputter xmlOutput = new XMLOutputter(); 

      xmlOutput.setFormat(Format.getPrettyFormat()); 
      xmlOutput.output(doc, new FileWriter("c:\\updated.txt")); 

      } catch (IOException io) { 
      io.printStackTrace(); 
      } catch (JDOMException e) { 
      e.printStackTrace(); 
      } 
} 
} 

답변

1

JDOM은 기존 파일에 추가를 직접 지원하지 않지만 추가 코드가 약간만 필요합니다. 출력을 StringWriter에 쓰고 문자열을 잡고 기존 파일에 문자열을 추가하십시오. 가능한 구현 예는 다음과 같습니다.

XMLOutputter xmlOutput = new XMLOutputter(); 
xmlOutput.setFormat(Format.getPrettyFormat()); 
StringWriter out = new StringWriter(); 
xmlOutput.output(doc, out); 
FileUtils.writeStringToFile(new File("c:\\updated.txt"), out.toString(), true); 

여기서는 commons-io FileUtils 클래스를 사용하여 속이고 있습니다. Append data into a file using Apache Commons I/O

commons-io를 사용할 수 없거나 응용 프로그램에 실용적이지 않은 경우 직접 append-string-to-file 메서드를 작성하십시오.