2012-09-13 88 views
0

我正在使用下面的代碼。但是,當我運行代碼時,我想將新的XML附加到另一個下面的同一個TXT文件中。這是可能的使用JDOM。請幫助我..使用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方法。