2016-04-05 3 views
0

Я попытался написать код, который будет читать и сохранять в xml-файле с помощью sax, но я новичок в этом, поэтому я продолжаю получать ошибку в заголовке. Вот код: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..это мне дается ссылка на то, как анализировать XML-документ! – Apoorv

ответ

0

Вы можете использовать следующие link для анализа XML-файла. После анализа документа вы всегда можете сохранить его в списке или коллекции или любых структурах данных. Позвольте мне сказать вам, что существует несколько способов анализа XML-документа, и некоторые из методов были показаны в приведенном выше примере.

0

Мне удалось разобраться в этом. Это дало мне эту ошибку, потому что файл был пуст, поэтому я инициализировал его одним элементом, и он сработал.