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



Индексация товаров


Пользуясь приведенным выше кратким обзором интерфейсов Java, дающих доступ к объектной модели документа, мы можем исследовать вопрос о создании

различных структур данных, которые ускорят процесс поиска товаров по каталогу, оставляя в то же время информацию о товарах в формате DOM. Ниже перечислены некоторые структуры данных и функциональные возможности, которые нам нужны:

перечень категорий product_line (серий товаров) каталога;

перечень всех товаров каждой серии;

быстрый поиск информации о конкретном товаре (содержимого элемента product) по указанному идентификатору товара (id);

список всех используемых ключевых слов, который можно предоставить пользователю для поиска нужных ему товаров;

быстрый поиск товаров по выбранным ключевым словам.

Метод scanCatalog, как показано в листинге 3.6, создает структуры данных, удовлетворяющие этим требованиям. Эти структуры данных — массивы типа String с именами productLineNames и keywords и объекты Hashtable с именами productLi neHT, productHT и prodByKeyHT. Мы используем классы коллекций, совместимые как с пакетом JDK Java 1.1, так и с JDK Java 1.2, поскольку (на момент написания книги) некоторые процессоры сервлетов до сих пор используют библиотеки Java 1.1.

Метод scanCatal og вызывается сразу же после того, как конструктор этого класса (листинг 3.4) завершил разбор файла XML. Заметим, что в методе scanCatalog первый метод, примененный к корневому элементу (гЕ), — это метод normalize(). Причина этого заключается в том, что у анализатора Sun имеется свойство воспринимать символы возврата каретки и дополнительные пробелы в тексте (которые авторы, пишущие на XML, часто используют для того, чтобы документ было легче просматривать) так, что этот текст разбивается указанными символами на несколько узлов типа Text. Метод normalize объединяет содержимое всех примыкающих друг к другу узлов Text в один узел Text.

Листинг 3.6. Метод scanCatalog инициализирует различные объекты Hashtable (theCatalog.java)

public void scanCatalog(){




Содержание  Назад  Вперед