2013-12-22 125 views
0

我在XML文件中的以下基本上我試圖改變XML文檔解析XML文檔用java的DocumentBuilder

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <root level="DEBUG"> 
    </root> 
</configuration> 

的屬性這是我的java文件

public static void changeXMLLogLevel(String pathToXMLDocument, String newWarnLevel){ 
    // make sure that xml file is present 
    File f = new File(pathToXMLDocument); 

    if (f.exists()) { 
     try { 
      DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
      Document doc = docBuilder.parse(pathToXMLDocument); 


      // Get the warn level 
      Node warnLevel = doc.getElementsByTagName("root").item(0); 

      System.out.println("The warn level is: " + warnLevel); 

      // more code.................. 

對於某些原因警告級別爲空,儘管我在我的xml文檔中有一個名爲root的標籤。

這是我得到我的輸出 The warn level is: [root: null]

回答

2

我想你誤解了你的輸出。有了這個

Node warnLevel = doc.getElementsByTagName("root").item(0); 

你在你的xml中得到單一的root標記。該對象的toString()是標記的名稱和節點的值,但顯然是it always returns null for element nodes

你想要的是獲得屬性level

Node warnLevel = doc.getElementsByTagName("root").item(0).getAttributes().getNamedItem("level"); 
System.out.println("The warn level is: " + warnLevel); 

它打印

level="DEBUG"