2014-02-21 118 views
0

我正尝试从java中的XML文件读取文件路径,但我得到的文件未找到异常。我不知道如何解决这个问题。任何帮助,将不胜感激。如何从XML文件中读取文件路径

这是XML文件:

<adapters> 
     <adapter> 
      <class>adapters.CSVFileAdapter</class> 
      <properties> 
       <property name="filename">C:\test.csv</property> 
      </properties> 
     </adapter> 
     <adapter> 
      <class>adapters.SNMPAdapter</class> 
      <properties> 
       <property name="target">10.100.85.135</property> 
       <property name="port">134</property> 
      </properties> 
     </adapter>  
</adapters> 

这是我的Java代码:

public class XMLConfigurationReader { 

public static List<String> load() 
{ 
    List<String> adpList = new ArrayList<String>(); 

    try{ 

     DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
     Document doc = docBuilder.parse (new File("C:/myProject/adapters.xml")); 
     doc.normalize(); 

     NodeList rootNodes = doc.getElementsByTagName("adapters"); 
     Node rootNode = rootNodes.item(0); 
     Element rootElement = (Element) rootNode; 
     rootNodes = rootElement.getElementsByTagName("class"); 

     for(int k=0; k<rootNodes.getLength(); k++){ 
      Node theAdapter = rootNodes.item(k); 
      Element adpElement = (Element) theAdapter; 
      adpList.add(adpElement.getTextContent()); 
     } 

     rootNodes = doc.getElementsByTagName("properties"); 
     for (int i = 0; i < rootNodes.getLength(); i++) { // loop for properties 
      Node nodeData = rootNodes.item(i); 
      Element elementColumnDetails = (Element) nodeData; 
      NodeList nodeListRow = elementColumnDetails.getElementsByTagName("property"); 
      for (int j = 0; j < nodeListRow.getLength(); j++) { // loop for property 
       Node nodeRow = nodeListRow.item(j); 
       Element elementRow = (Element) nodeRow; 

       if(elementRow.getAttribute("property") != null){ 
        String property = elementRow.getTextContent().trim(); 
       } 

      } 
     } 

    }catch(ParserConfigurationException e){ 
     e.printStackTrace(); 
    } catch (SAXException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return adpList; 

} 

}

+2

是'C:/ myProject/adapters.xml'路径是否正确?和堆栈跟踪也将有所帮助。 – Sanjeev

+0

你的那条路是绝对正确的。这不是那个问题,我认为这是因为它不是从XML文件的C:\ test.csv中读取 – user3216736

+2

堆栈跟踪请 – Sanjeev

回答

-1

首先要读取的文件:

public class FileRead { 
    static String string = File.separator; 
    public static void main(String[] args) { 
     File file = new File("C:"+string+"myProject"+string+"adapters.xml"); 
     System.out.println(file.getName()); 
    } 
} 

然后试着测试下面的代码将帮助你从XML文件获取名称:

NodeList nodeListData = xmlTableName.getElementsByTagName("properties"); 
for (int k = 0; k < nodeListData.getLength(); k++) { // loop for properties 
    Node nodeData = nodeListData.item(k); 
    Element elementColumnDetails = (Element) nodeData; 
    NodeList nodeListRow = elementColumnDetails.getElementsByTagName("property); 
    for (int l = 0; l < nodeListRow.getLength(); l++) { // loop for property 
     Node nodeRow = nodeListRow.item(l); 
     Element elementRow = (Element) nodeRow; 
     if(elementRow.getAttribute("filename")){ 
      filePath = elementRow.getTextContent().trim(); 
     } 
    } 
} 
+0

我认为这个问题是不同的。他无法读取adapters.xml本身。 – AJJ

+0

问题提到了两个问题,1.“我试图从Java中的XML文件中读取文件路径”,2.“我得到的文件未找到异常” –

+0

@Suzon,此代码有效,谢谢你的,但是有没有方法可以返回节点中的内容? – user3216736

1

问题与您的代码是在这一行

adaptersList.item(0).getChildNodes().item(0).getNodeValue(); 

它应该

adaptersList.item(0).getTextContent(); 

为了给你的路径名来代替。

相关问题