2014-02-17 23 views
2

我試圖創建一個XML文件,並創建僅在後,我添加一些元素根節點不工作,這就是我想要的東西:創建XML惟一的根元素在Java

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<Users> 
</Users> 

但是這是我有:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<Users/> 

,這是我的代碼:

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 
       DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); 
       Document doc = documentBuilder.newDocument(); 
       Element root_users = doc.createElement("Users"); 
       doc.appendChild(root_users); 

       DOMSource source = new DOMSource(doc); 

       TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
       Transformer transformer = transformerFactory.newTransformer(); 
       transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
       StreamResult result = new StreamResult(path+"users.xml"); 
       transformer.transform(source, result); 

我不明白爲什麼不工作,我想創建ONL y中的根元素,因爲之後我想檢索與此是根節點:

Document document = documentBuilder.parse(pathToWrite+"users.xml"); 
Element root = document.getDocumentElement(); 

並追加子裏面,有在年底這樣的結構:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<Users> 
    <User> 
    <Name>Carl</Name> 
    </User> 
    <User> 
    <Name>Bob</Name> 
    </User> 
</Users> 

我可怎麼辦呢?

+0

只有你添加子節點,它會給你所期望的輸出....有結束標籤也 – Naren

回答

1

你想要什麼,你得到的是功能上相同。

/>最後只是代表結束標記的簡寫。

嘗試向它附加東西,看看會發生什麼。

+0

你有正確的!謝謝! – Piero

2
<Users/> 

是一個空元素的簡寫,即意味着完全一樣

<Users></Users> 

如果添加了孩子這個元素你會得到你所期望的輸出。

注意<Users/>是不一樣

<Users> 
</Users> 

因爲後者元素不是空的 - 它包含一個換行符。爲了創建這個你需要一個文本子節點添加到root_users元素

Document doc = documentBuilder.newDocument(); 
Element root_users = doc.createElement("Users"); 
doc.appendChild(root_users); 
root_users.appendChild(doc.createTextNode("\n"));