2013-05-10 85 views
1

我無法弄清楚爲什麼我的下面的xml編寫器沒有保存到產品數組列表中。相反,我的程序沒有添加任何東西到列表中,並使用調試器,我發現數組列表的產品值始終是「size = 0」。我不知道爲什麼,我想從一個XML文件,這裏的列表中添加元素這個值是不會改變的是什麼我的代碼,這樣做看起來像:讀取XML文件中的數據並將其保存到數組

private static ArrayList<Product> readProducts() 
{ 
    ArrayList<Product> products = new ArrayList<>(); 
    Product p = null; 
    XMLInputFactory inputFactory = XMLInputFactory.newFactory(); 
    try 
    { 
     //create a stream reader object 
     FileReader fileReader = new FileReader("products.xml"); 
     XMLStreamReader reader = inputFactory.createXMLStreamReader(fileReader); 
     //read XML file 
     while (reader.hasNext()) 
     { 
      int eventType = reader.getEventType(); 
      switch (eventType) 
      { 
       case XMLStreamConstants.START_ELEMENT : 
        String elementName = reader.getLocalName(); 
        //get the product and its code 
        if (elementName.equals("Product")) 
        { 
        p = new Product(); 
        String code = reader.getAttributeValue(0); 
        p.setCode(code); 
        } 
        // get the product description 
        if (elementName.equals("Description")) 
        { 
        String description = reader.getElementText(); 
        p.setDescription(description); 
        }  
        // get the product price 
        if (elementName.equals("Price")) 
        { 

         String priceS = reader.getElementText(); 
         double price = Double.parseDouble(priceS); 
         p.setPrice(price); 
        }  
        break; 
       case XMLStreamConstants.END_ELEMENT : 
        elementName = reader.getLocalName(); 
        if(elementName.equals("product")) 
        { 
        products.add(p); 
        }  
        break; 
       } 
     reader.next(); 
     }  
    } 
    catch (IOException | XMLStreamException e) 
    { 
     System.out.println(e); 
    }  
    return products; 
    } 
+2

'「產品」'不等於'「產品」'... – jlordo 2013-05-10 05:37:53

+0

+1,jlordo ...... – 2013-05-10 05:39:55

+0

這解決了這個問題非常感謝,我不知道爲什麼我從來沒有看到該p我一直在使用googling的東西,並在過去的一小時內檢查過我的代碼,並且這樣簡單的修復 – 2013-05-10 05:42:57

回答

3

如果你的開放代碼名稱Product,則相應的結束標記必須是Product,因爲它是有效的xml。爲此,你需要改變

if(elementName.equals("product")) 

if(elementName.equals("Product")) 
        ^

,如果你想看到你想要的行爲。

相關問題