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

         

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



Листинг 7.39. Метод loadXML осуществляет анализ документа XML (DOMIibrary.java)

private synchronized void loadXML(File xmlFile, String src ) { //File xmlFile = new File( src ) ; try { long timestamp = xmlFile.lastModified();
InputSource input = Resolver.createInputSource( xmlFile );
// ... the "false" flag says not to validate (faster) // XmlDocument is in the com.sun.xml.tree package Document doc = XmlDocument.createXmlDocument (input, false);
domHash.put( src, doc );
trackerHash.put( src, new DomTracker( timestamp ) );
}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 );
}catch( SAXException se ){ lastErr = se.toString();
System.out.println("loadXML threw " + lastErr );
domHash.put( src, lastErr );
se.printStackTrace( System.out );
}catch( IOException ie ){ lastErr = ie.toString();
System.out.println("loadXML threw " + lastErr + " trying to read " + src );
domHash.put( src, lastErr );
} } // end loadXML

Когда сервлетам требуется получить документ, они вызывают метод getDOM, показанный в листинге 7.40. Если при создании документа возникают какие-либо проблемы, то вместо ссылки на документ этот метод возвращает null. Каждый раз, когда в хэш-таблице обнаруживается требуемый документ, в ассоциированном объекте DomTracker обновляется значение времени последнего использования, которое заменяется текущим временем. Заметим, что в нескольких местах создаются выходные сообщения, которые записываются в объект System.out и служат для отладки. Мы советует закомментировать их после того, как система заработает.



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