2016-01-23 35 views
1

我想從一個項目的XML文件的值,我的工作,但我似乎無法得到它...不在xml文件中返回正確的值?

這是XML文件:

XML file code

我嘗試使用

public static String getString(File file, String element) { 
    try { 
     File fXmlFile = file; 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(fXmlFile); 
     doc.getDocumentElement().normalize(); 
     NodeList nList = doc.getElementsByTagName(element); 

     for (int temp = 0; temp < nList.getLength(); temp++) { 
      Node nNode = nList.item(temp); 

      if (nNode.getNodeType() == Node.ELEMENT_NODE) { 
       Element eElement = (Element) nNode; 

       return eElement.getElementsByTagName("author").item(0).getTextContent(); 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return "Error"; 
} 

使用這種方法來訪問它

File mapdata = new File(HeroVsVilliansCore.getPlugin().getDataFolder(), File.separator + "Maps" + File.separator); 
     File f = new File(mapdata, "Test.xml"); 

但它返回「錯誤」而不是「作者」的價值?

回答

2

嘗試使用getDocumentElement,而不是第一的getElementsByTagName(由什麼的element價值的方式 - 應該是「地圖」):

return doc.getDocumentElement() 
     .getElementsByTagName("author") 
     .item(0).getTextContent(); 

或拆分到多條語句,並再檢查一下元素具有真正非零尺寸。

+0

找不到「getRootElement()」,但我用「getDocumentElement()」,它似乎工作。 – Kingbluesapphire

+0

對不起,你是對的,我粘貼鏈接到Jdom而不是標準的API。現在更新。 –

+0

完美的作品! – Kingbluesapphire