2016-04-05 98 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

我终于弄明白了。它给了我那个错误,因为这个文件是空的,所以我用一个元素初始化了它,它工作。