2012-07-31 70 views
1

我想知道是否有人可以幫助將數據附加到XML文件。下面,我有代碼從其他XML文件抓取數據,做一些邏輯更改,並將更改寫入新的輸出文件。然而,看這api如何使用jdom和java將數據追加到xml文件中

m having trouble understanding which method does appending. It seems like all of them creates a new XML file doc/overwrites an existing one if it exists. I m試圖追加標籤到新文件,因爲我循環。

 for(int i = 0; i < itemList.size(); i++){ 

      //get the specific item node 
      Element item = (Element)itemList.get(i); 

      //there are some non item nodes so need this check 
      if(item.getName().equals("item")){ 

       //do some logic changing to the tags 

       //System.out.println(item.getValue()); 
       //System.out.println(item.getChild("Q").getValue()); 
       //System.out.println(item.getChild("A").getValue()); 

       boolean exists = (new File("/Users/davidyu/Desktop/file2.xml")).exists(); 
       //if file exists 
       if(exists){ 
        System.out.println("in here1"); 
        xmlOutput.????? 
       } 
       else{ 
        System.out.println("in here2"); 
        xmlOutput.output(doc, new FileWriter("/Users/davidyu/Desktop/file2.xml")); 
       } 

      } 

我基本上試圖做的是在每次循環迭代後爲文件寫一個新的item標籤。該項目標籤應包含新的childNodes「Q」和「A」。

我該怎麼做?

回答

2

鑑於您正在循環執行此操作,因此在循環開始之前加載文件一次,然後遍歷循環並隨時向文檔中添加元素,然後保存它在循環之後再次。如果文件事先不存在,請創建一個新的文檔(只在內存中,稍後保存),並使用您需要的任何結構 - 例如只是一個適當的根元素。當然,您需要確定要添加新元素的位置。

沒有簡單的方法將元素添加到現有的XML文件沒有首先加載現有的文件。 (雖然你可能可能以流方式進行,但編碼可能會複雜得多。)

0

XMLOutputter只是將一個現有的XML結構輸出到一個目的地 - 在你的情況下是一個文件。在我看來,您有興趣改變現有XML文檔的結構。如果是這樣的話,那麼一旦你必須要要(在你的例子Element item = (Element)itemList.get(i);)將內容添加到元素的引用,你需要做的是這樣的:

Element newElement = new Element("NewElement"); 
item.addContent(newElement); 

這將添加的元素<NewElement/>item元素給

<item> 
    <NewElement/> 
</item> 

下見Element的javadoc。

相關問題