6e1bb17f

Создание объектной модели документа для каталога товаров


Как мы говорили в главе 1, исходное создание объектной модели документов на Java очень просто, поскольку вся работа выполняется анализатором, входящим в набор инструментальных средств. В листинге 3.4 показан фрагмент кода, который на основе документа XML строит объект org.w3c.dom.Document. Основная часть кода состоит из инструкций, перехватывающих различные синтаксические ошибки.

Листинг 3.4. Пример синтаксического анализа документа (TheCatalog.java)

]

import javax.xml.parsers.* ;

import org.xml.sax.* ;

import org.w3c.dom.* ;

public class TheCatalog

{

org.w3c.dom.Document catDoc ;

public TheCatalog( File f, TextArea msg, TextField status ){

try {

timestamp = f.lastModified();

DocumentBuilderFactory dbf =

DocumentBuilderFactory.newInstance ();

// statements to configure the DocumentBuilder would go here

DocumentBuilder db = dbf.newDocumentBuilder ();

catDoc = db.parse( f );

}catch(ParserConfigurationException pce){



lastErr = pce.toString();

System.out.println("constructor threw " + lastErr );

}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("constructor threw " + lastErr );

se.printStackTrace( System.out );

}catch( IOException ie ){

lastErr = ie.toString();

System.out.println("constructor threw " + lastErr +

" trying to read " + f.getAbsolutePath() );

}

}

Структура данных DOM выстраивается в памяти в такую же иерархическую систему, какая была в документе XML. Объекты Java представляют различные части документа XML и связаны ссылками на соседние элементы, как показано на 1.2 в главе 1. Программные интерфейсы объектов Java, представляющие различные части документа, определены в пакете org.w3c.dom. Каждая часть документа XML, включая корневой элемент, представлена в виде объекта, реализующего интерфейс, который является расширением фундаментального интерфейса Node.



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