2016-06-20 5 views
0

xmlファイルを読み込んで属性を取得し、その値を画面に出力するJavaプログラムがあります。今度は、各属性の値を取得し、その属性に一致するすべてのファイルを見つけるためにディレクトリを検索したいと思います。次のようにXML属性を取り、指定されたディレクトリの属性値と一致するファイルを見つける方法Java

私のコードは次のとおりです。

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")の値を取り、任意の一致のための画像/部品のディレクトリを検索したいと思います。

これを行うにはどうすればよいですか?

答えて

0

以下の2つの手順でこれを達成できます。

ステップ1: ストアすべてのファイル名&以下のようなハッシュマップでその絶対パス、

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"); 
} 
関連する問題