2015-01-08 74 views
0

我不太確定爲什麼我無法將屬性修改爲我的xml。我用下面的代碼來讀取XML中的屬性。提取屬性沒有任何問題。更新文檔樹中的XML屬性值

 document = documentBuilder.parse(file); 
     NodeList sessionNodelist = document.getElementsByTagName("session"); 
     if (sessionNodelist.getLength() > 0) 
     { 
      Element sessionElement = (Element) sessionNodelist.item(0); 
      String timeout = sessionElement.getAttribute("timeout"); 
      String warning = sessionElement.getAttribute("warning"); 
     } 

現在,當我去設置它們,它不起作用,我不太清楚爲什麼。代碼如下。這是我用來拉動atribles的完全相同的代碼,而不是我使用setAttribute的getAttribute,它使用兩個參數。 setAttribute(String name,String Value)。

 document = documentBuilder.parse(file); 
     NodeList sessionNodelist = document.getElementsByTagName("session"); 
     if (sessionNodelist.getLength() > 0) 
     { 
      Element sessionElement = (Element) sessionNodelist.item(0); 
      sessionElement.setAttribute("timeout","12"); 
      sessionElement.setAttribute("warning", "10"); 
     } 

任何想法?

+0

這到底是怎麼預期?元素屬性正在改變。你想把它們保存回XML嗎? – manouti

+0

是的,我的UI允許用戶更改值,所以我在xml中設置了新值。 – user1158745

+0

您如何驗證屬性是否已更改? –

回答

0

您需要將文檔樹寫回XML文件。有關如何將DOM樹寫入文件,請參閱this page

你可以使用一個javax.xml.transform.Transformer對象寫入到文件,如下所示:

TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
Transformer transformer = transformerFactory.newTransformer(); 
DOMSource source = new DOMSource(document); 
StreamResult result = new StreamResult(file); 
transformer.transform(source, result); 
+0

好吧,看起來這是我所需要的。 – user1158745

+0

最後一個問題,對於某些原因,當我去寫文件路徑時,它不喜歡程序文件中有空格的事實。任何方式來解決這個問題?我正在使用轉義字符E.g「C:\\ Progarm Files \\ test.xml」 – user1158745