Электронный магазин на Java и XML

         

Метод loadXML осуществляет...



Листинг 9.11. Метод loadXML осуществляет синтаксический анализ (NewsModel.java)

// return true if sucessful - if false, see lastErr public synchronized boolean loadXML( ) { File xmlFile = new File( path, fname );
System.out.println("NewsModel.loadXML start " + xmlFile.getAbsolutePath() );
try { timestamp = xmlFile.lastModified();
dateStr = new Date( timestamp ).toString();
InputSource input = Resolver.createInputSource( xmlFile );
// ... the "false" flag says not to validate (faster) // XmlDocument is in the com.sun.xml.tree package doc = XmlDocument.createXmlDocument (input, false);
System.out.println("Created document");
usable = true ; return true ; }catch(SAXParseException spe ){ StringBuffer sb = new StringBuffer( spe.toString() );
sb.append("\n Line number: " + spe.getLineNumber());
sb.append("\nColumn number: " + spe.getColumnNumber() );
sb.append("\n Public ID: " + spe.getPublicId() );
sb.append("\n System ID: " + spe.getSystemId() + "\n");
lastErr = sb.toString();
System.out.print( lastErr );
return false ; }catch( SAXException se ){ lastErr = se.toString();
System.out.println("loadXML threw " + lastErr );
se.printStackTrace( System.out );
return false ; }catch( IOException ie ){ lastErr = ie.toString();
System.out.println("loadXML threw " + lastErr + " trying to read " + xmlFile.getAbsolutePath() );
return false ; } } // end loadXML

Если анализ XML завершился успешно и была создана объектная модель документа, вызывается метод locateCategories. Как показано в листинге 9.12, этот метод получает NodeList — список всех элементов article, и записывает его в переменную articleNodeList. Затем он вызывает метод processArticle для каждого элемента. Метод processArticle строит вектор элементов для каждого значения элемента cluster. Это как раз тот вектор, который выдает заголовки сообщений, если в запросе пользователя указана конкретная тематика.



Содержание раздела