2016-06-20 14 views
0

Ich habe ein Java-Programm, das eine XML-Datei liest und ein Attribut und druckt diesen Wert auf dem Bildschirm. Jetzt möchte ich den Wert jedes Attributs nehmen und ein Verzeichnis durchsuchen, um alle Dateien zu finden, die mit dem angegebenen Attribut übereinstimmen.Wie kann ich XML-Attribut und finde eine Datei, die den Attributwert in einem bestimmten Verzeichnis entspricht Java

Mein Code ist wie folgt:

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

Ich würde jetzt eElement.getAttribute("partNumber") ‚s-Wert zu übernehmen möchten und die Bilder/Teile Verzeichnis für alle Übereinstimmungen.

Wie kann ich das machen?

Antwort

0

Sie können dies mit zwei Schritten erreichen.

Schritt 1: Speichern Sie alle Dateinamen & Seine absolute Pfade in hashmap wie unten,

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

Schritt 2: Verwenden Sie die Hash-Karte Ihre Spiele suchen

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