2017-07-18 3 views
-4

Wie extrahiere ich einen Wert aus einem XML, speichere den Wert und benutze ihn Ersetzen Sie Dateiname und Ordnername mit Java? Ich muss eine XML-Datei lesen und einen Wert extrahieren, damit er zum Ersetzen eines Datei- und Ordnernamens verwendet werden kann;Wie extrahiere ich einen Wert aus einem XML, speichere den Wert und benutze ihn Ersetzen Sie Dateiname und Ordnername mit Java?

  1. XML-Datei hat einen Wert "Auto"
  2. Extract "Car"
  3. dann diesen Wert verwenden, um einen Dateinamen zB zu ersetzen: car.jpg/pdf
  4. Auch ersetzen die Ordnernamen

Irgendwelche Vorschläge, wie dies getan werden kann? Ich benutze Java, Dom Paser und Xpath.

public class ReadAndPrintXMLFile { 

    public static void main(String argv[]) { 

     String path = "book.xml"; 

     String output = getName(path); 
     String LstName = getLN(path); 
     System.out.println("Firstname" + output); 
     System.out.println("LastName" + LstName); 
     //System.exit (0); 

    }//end of main 

    public static String getName(String path) { 
     try { 

      DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
      Document doc = docBuilder.parse(new File(path)); 

      // normalize text representation 
      doc 
        .getDocumentElement() 
        .normalize(); 
      System.out.println("Root element of the doc is " + doc 
        .getDocumentElement() 
        .getNodeName()); 

      NodeList listOfPersons = doc.getElementsByTagName("person"); 
      int totalPersons = listOfPersons.getLength(); 
      System.out.println("Total no of people : " + totalPersons); 

      for(int s = 0; s < listOfPersons.getLength(); s++) { 

       Node firstPersonNode = listOfPersons.item(s); 
       if(firstPersonNode.getNodeType() == Node.ELEMENT_NODE) { 

        Element firstPersonElement = (Element) firstPersonNode; 

        //------- 
        NodeList firstNameList = firstPersonElement.getElementsByTagName("first"); 
        Element firstNameElement = (Element) firstNameList.item(0); 

        NodeList textFNList = firstNameElement.getChildNodes(); 
        //     System.out.println("First Name : " + 
        //            ((Node)textFNList.item(0)).getNodeValue().trim()); 


        return ((Node) textFNList.item(0)) 
          .getNodeValue() 
          .trim() 
          .toString(); 


       } 

      } 

     } catch(SAXParseException err) { 
      System.out.println("** Parsing error" + ", line " + err.getLineNumber() + ", uri " + err.getSystemId()); 
      System.out.println(" " + err.getMessage()); 

     } catch(SAXException e) { 
      Exception x = e.getException(); 
      ((x == null) ? e : x).printStackTrace(); 

     } catch(Throwable t) { 
      t.printStackTrace(); 
     } 

     return null; 
    } 

    public static String getLN(String path) { 
     try { 

      DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
      Document doc = docBuilder.parse(new File(path)); 

      // normalize text representation 
      doc 
        .getDocumentElement() 
        .normalize(); 
      System.out.println("Root element of the doc is " + doc 
        .getDocumentElement() 
        .getNodeName()); 

      NodeList listOfPersons = doc.getElementsByTagName("person"); 
      int totalPersons = listOfPersons.getLength(); 
      System.out.println("Total no of people : " + totalPersons); 

      for(int s = 0; s < listOfPersons.getLength(); s++) { 

       Node lastPersonNode = listOfPersons.item(s); 
       if(lastPersonNode.getNodeType() == Node.ELEMENT_NODE) { 

        Element lastPersonElement = (Element) lastPersonNode; 

        //------- 
        NodeList lastNameList = lastPersonElement.getElementsByTagName("last"); 
        Element lastNameElement = (Element) lastNameList.item(0); 

        NodeList textLNList = lastNameElement.getChildNodes(); 
        //     System.out.println("First Name : " + 
        //            ((Node)textFNList.item(0)).getNodeValue().trim()); 



        return ((Node) textLNList.item(0)) 
          .getNodeValue() 
          .trim() 
          .toString(); 

       } 

      } 

     } catch(SAXParseException err) { 
      System.out.println("** Parsing error" + ", line " + err.getLineNumber() + ", uri " + err.getSystemId()); 
      System.out.println(" " + err.getMessage()); 

     } catch(SAXException e) { 
      Exception x = e.getException(); 
      ((x == null) ? e : x).printStackTrace(); 

     } catch(Throwable t) { 
      t.printStackTrace(); 
     } 

     return null; 
    } 


} 
+1

Was Sie bisher getan haben? –

+1

Sorry, das ist nicht die Art wie StackOverflow funktioniert. Fragen der Form _ "Ich möchte X machen, bitte führe mich" _ werden als nicht-themenbezogen angesehen. Bitte besuche [help] und lies [ask] und lese besonders [Warum ist "Kann mir jemand helfen?" Keine Frage?] (Http://meta.stackoverflow.com/q/284236/18157) –

+0

Hat versuchst du etwas? –

Antwort

0

Sie benannte nur die Methode, die Sie implementieren müssen:

public string extractValue(string xmlFilePath, string keyName) { 
    //open xml file 
    // use Xpath to search for key 
    // return value for key 
} 

public void replaceFilename(string originalFileName, string newFileName) { 
    // test for correct paths 
    // replace filename 
} 

public void replaceFoldername(string originalFolderName, string newFolderName) { 
    // create new folders 
    // move file from old folders to new folders 
    // remove old folders (if empty) 
} 
+0

Das sieht wie eine gute Gliederung Ich werde etwas wie das versuchen und sehen, wie ich mich verstehe. Prost – lee

Verwandte Themen