簡體   English   中英

如何從XML文件讀取文件路徑

[英]How do I read in a file path from an XML file

我正在嘗試從Java中的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;

}

}

您的代碼存在問題

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

它應該替換為

adaptersList.item(0).getTextContent();

為了給你那個路徑名。

首先讀取一個文件:

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();
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM