2017-04-17 52 views
-1

我'解析XML文件,以獲得一些價值,一切似乎罰款exept當我顯示,我讓他們從XML值,they'are空白充分利用XML空白值

public static void main(String[] args) throws Throwable { 
    SpringApplication.run(SwiftApplication.class, args); 

    XMLInputFactory factory = XMLInputFactory.newInstance(); 



     //On utilise notre fichier de test 

     File file = new File("/home/dhafer/Downloads/Connector's Files/file.xml"); 



     //Nous allons stocker deux feuilles et arrêter la lecture 

     ArrayList<String> listFruit = new ArrayList<>(); 



     try { 

     //Obtention de notre reader 

     XMLStreamReader reader = factory.createXMLStreamReader(new FileReader(file)); 

     while (reader.hasNext()) { 

      // Récupération de l'événement 

      int type = reader.next(); 





      switch (type) { 

       case XMLStreamReader.START_ELEMENT: 

        System.out.println("Nous sommes sur un élement " + reader.getLocalName()); 

        // Si c'est un début de balise, on vérifie qu'il s'agit d'une balise feuille 

        if(reader.getLocalName().equals("OptnTp")){ 



         //On récupère l'évenement suivant, qui sera le contenu de la balise 

         //et on stocke dans la collection 

         reader.next(); 

         listFruit.add(reader.getCharacterEncodingScheme()); 

         System.out.println("\t -> Fruit récupérée ! "); 

        } 



        break; 

      } 



      //Si nous avons deux feuilles, on stop la lecture 

      if(listFruit.size() > 2){ 

       System.out.println("\t --> Nombre de fruit > 1 => fin de boucle !"); 

       break; 

      } 



     } 

     } catch (FileNotFoundException e) { 

     e.printStackTrace(); 

     } catch (XMLStreamException e) { 

     e.printStackTrace(); 

     } 




      System.out.println(listFruit.get(0)); 



    } 

    } 

這裏是我使用的xml文件。

<CorpActnOptnDtls> 
    <OptnNb>004</OptnNb> 
    <OptnTp> 
     <Cd>NOAC</Cd> 
    </OptnTp> 
    <FrctnDspstn> 
     <Cd>DIST</Cd> 
    </FrctnDspstn> 
    <CcyOptn>EUR</CcyOptn> 
    <DfltPrcgOrStgInstr> 
     <DfltOptnInd>true</DfltOptnInd> 
    </DfltPrcgOrStgInstr> 
    </CorpActnOptnDtls> 

我錯過了什麼? 有什麼想法? 謝謝

+0

請添加一個示例XML文件,你的問題 – Ishnark

+0

任何想法?我得到這個輸出:[[C @ 7852e922,[C @ 7852e922,[C @ 7852e922,[C @ 7852e922] –

回答

0

我能夠沒有任何問題地運行你的代碼,我看到所有在XML中的標籤都打印在控制檯上。

 public static void main(String args[]){ 
    XMLInputFactory factory = XMLInputFactory.newInstance(); 
     // I made only below path change to read the xml file from my windows machine 
    File file = new File("C:/LocalWorkSpace/Test/src/Test1.xml"); 
    ArrayList<String> listFruit = new ArrayList<>(); 
     try { 
     XMLStreamReader reader = factory.createXMLStreamReader(new FileReader(file)); 
     while (reader.hasNext()) { 
      int type = reader.next(); 
      switch (type) { 
       case XMLStreamReader.START_ELEMENT: 
        System.out.println("We are on an element " + reader.getLocalName()); 


        if(reader.getLocalName().equals("OptnTp")){ 
         reader.next(); 
         listFruit.add(reader.getCharacterEncodingScheme()); 
         System.out.println("\t -> Fruit recovered! "); 
        } 
        break; 
      } 
      if(listFruit.size() > 2){ 
       System.out.println("\t --> Number of fruit> 1 => end of loop!"); 
       break; 
      } 
     } 

     } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     } catch (XMLStreamException e) { 
     e.printStackTrace(); 
     } 
      System.out.println(listFruit.get(0)); 

    } 

輸入XML

<?xml version="1.0" encoding="UTF-8"?> 
<CorpActnOptnDtls> 
    <OptnNb>004</OptnNb> 
    <OptnTp> 
     <Cd>NOAC</Cd> 
    </OptnTp> 
    <FrctnDspstn> 
     <Cd>DIST</Cd> 
    </FrctnDspstn> 
    <CcyOptn>EUR</CcyOptn> 
    <DfltPrcgOrStgInstr> 
     <DfltOptnInd>true</DfltOptnInd> 
    </DfltPrcgOrStgInstr> 
    </CorpActnOptnDtls> 

控制檯輸出

We are on an element CorpActnOptnDtls 
We are on an element OptnNb 
We are on an element OptnTp 
    -> Fruit recovered! 
We are on an element Cd 
We are on an element FrctnDspstn 
We are on an element Cd 
We are on an element CcyOptn 
We are on an element DfltPrcgOrStgInstr 
We are on an element DfltOptnInd 
UTF-8 
+0

我的問題是當我嘗試顯示數組時,必須包含NOAC,請嘗試顯示它請 –

+0

那麼我在你的代碼中看不到任何地方添加NOAC到數組。如果您的代碼更新嘗試執行不同的操作並且無法正常工作,請更新您的帖子。 – ssanrao