2016-04-05 180 views
0

我試圖編寫一個代碼,它將使用sax讀取並保存到一個xml文件中,但我對此很陌生,所以我不斷收到標題中的錯誤。這裏是代碼:SaxParserException文件過早結束

public void readMoviesFromXML() 
{ 
    ArrayList<Movie> lst = new ArrayList<>(); 

    try { 
     DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); 
     Document document = documentBuilder.parse("movies.xml"); 
     //I get the error at the line just above 


     Node root = document.getDocumentElement(); 
     NodeList nodeList = root.getChildNodes(); 

     for(int i=0; i<nodeList.getLength(); i++) 
     { 
      Node node = nodeList.item(i); 

      if(node instanceof Element) 
      { 
       Element element = (Element) node; 

       Attr attr = element.getAttributeNode("moviename"); 
       String moviename = attr.getValue(); 

       String title = getNodeValue(element, "name"); 
       String rented = getNodeValue(element, "renttimes"); 

       Movie movie = new Movie(title, Integer.parseInt(rented)); 

       lst.add(movie); 
      } 
     } 
    }catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

    mm.setMovieMap(lst); 
} 

xml文件未初始化,我擔心這可能是問題。 任何幫助表示讚賞。

+0

您是否嘗試使用XDocument解析? – Apoorv

+0

我對XML不熟悉,所以我不知道XDocument是什麼。 –

+0

wait..let我給你一個關於如何解析XML文檔的鏈接! – Apoorv

回答

0

您可以嘗試使用以下link來解析您的XML文件。一旦文檔被解析,你可以將其存儲在一個List或集合中,或者任何數據結構中。 讓我告訴你,解析一個XML文檔有多種方法,並且上面的例子中已經顯示了一些技巧

0

我終於弄明白了。它給了我那個錯誤,因爲這個文件是空的,所以我用一個元素初始化了它,它工作。