2017-01-26 1 views
0

Ich habe die folgende XML-Datei, die ich analysieren muss, und ich muss den Vornamen des Schülers wählen, deren person_type Wert = 1. Ich verwende dom4j in meinem Java-Projekt und ich bin nicht in der Lage, eine Lösung zu finden, um den Vornamen basierend auf dem Wert des person_type zu extrahieren. Jede Hilfe wäre willkommen.Parsing xml mit Dom4j basierend auf Bedingung

<?xml version="1.0"?> 
<class> 
<student> 
<firstname>dinkar</firstname> 
<lastname>kad</lastname> 
<nickname>dinkar</nickname> 
<marks>85</marks> 
<person_types> 
    <person_type>1</person_type> 
    <person_description>POC</person_description> 
</person_types> 
</student> 
<student> 
<firstname>Vaneet</firstname> 
<lastname>Gupta</lastname> 
<nickname>vinni</nickname> 
<marks>95</marks> 
<person_types> 
    <person_type>1</person_type> 
    <person_description>Assistant</person_description> 
</person_types> 
</student> 
<student> 
<firstname>jasvir</firstname> 
<lastname>singn</lastname> 
<nickname>jazz</nickname> 
<marks>90</marks> 
<person_types> 
    <person_type>1</person_type>` 
    <person_description>Leader</person_description> 
</person_types> 
</student> 
</class> 
+0

es Google. Es gibt eine Zillion Lösungen zu diesem – efekctive

+0

Danke ... werde das tun –

Antwort

0
public static void main(String[] args) { 
     try { 
      File inputFile = new File("input.txt"); 
      SAXReader reader = new SAXReader(); 
      Document document = reader.read(inputFile); 

      System.out.println("Root element :" 
       + document.getRootElement().getName()); 

      Element classElement = document.getRootElement(); 

      List<Node> nodes = document.selectNodes("/class/student"); 
      System.out.println("----------------------------"); 
      for (Node node : nodes) { 
      if("1".equals(node.selectSingleNode("person_types").selectSingleNode("person_type").getText())){ 
       System.out.println("\nCurrent Element :" 
         + node.getName()); 
         System.out.println("Student roll no : " 
         + node.valueOf("@rollno")); 
         System.out.println("First Name : " + node.selectSingleNode("firstname").getText()); 
         System.out.println("Last Name : " + node.selectSingleNode("lastname").getText()); 
         System.out.println("First Name : " + node.selectSingleNode("nickname").getText()); 
         System.out.println("Marks : " + node.selectSingleNode("marks").getText()); 
      } 
      } 
     } catch (DocumentException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

Danke Kumpel !!! Wusste nicht, dass wir so navigieren könnten. Du hast gerade eine Menge Arbeit für mich gespart !! :) –