如何获取XML属性并找到与给定目录java中的属性值匹配的文件

时间:2016-06-20 20:12:17

标签: java xml directory

我有一个java程序,它读取一个xml文件并抓取一个属性并将该值打印到屏幕上。现在我想获取每个属性的值并搜索目录以查找与该给定属性匹配的所有文件。

我的代码如下:

    public class ReadXML {

    public static void main(String[] args) {
        try {

        File fXmlFile = new File("////Orders//188219.outorder");
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile);

        doc.getDocumentElement().normalize();

        NodeList nList = doc.getElementsByTagName("seln_part");
        File dir = new File("////Images//Parts");

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

            Node nNode = nList.item(temp);

            System.out.println("\nCurrent Element :" + nNode.getNodeName());

            if (nNode.getNodeType() == Node.ELEMENT_NODE) {

                Element eElement = (Element) nNode;
                FileFilter filter;
                System.out.println("Part Number : " + eElement.getAttribute("partNumber"));
            }
        }

        catch (Exception e){
            e.printStackTrace();
        }
    }
}

我现在想要获取eElement.getAttribute("partNumber")的值并在images / parts目录中搜索任何匹配项。

我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

您可以通过以下两个步骤实现此目的。

第1步: 存储所有文件名和它在hashmap中的绝对路径如下,

HashMap<String,String> fileNamevsPathMap = new HashMap<String,String>();
String rootDirectory = "Your Directory Path to Search";
boolean isRecursive = true;
Collection files = FileUtils.listFiles(rootDirectory, null, isRecursive);
for (Iterator iterator = files.iterator(); iterator.hasNext();) {
    File file = (File) iterator.next();
    fileNamevsPathMap .put(file.getName(),file.getAbsolutePath()
}

第2步:使用哈希映射搜索您的匹配

if(fileNamevsPathMap.containsKey(eElement.getAttribute("partNumber"))){
     System.out.println("Part Number absolute path : "+fileNamevsPathMap.get(eElement.getAttribute("partNumber")));
}else{
     System.out.println("Part Number Not found on directory");
}