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




Выбор заголовков - часть 3


Листинг 9.15. Этот метод возвращает все элементы с заданным значением элемента cluster (NewsModel.java)

// return array of Element for this topic // or null if none available public Element[] articlesByTopic( String topic ){ Vector v = (Vector) clusterHash.get( topic ); if( v == null ) return null ; Element[] ret = new Element[ v.size() ]; for( int i = 0 ; i < ret.length ; i++ ){ ret[i] = (Element) v.elementAt( i ); } return ret ; }

public Element[] getAllTopics(){ int ct = articleNodeList.getLength(); Element[] ret = new Element[ ct ]; for( int i = 0 ; i < ct ; i++ ){ ret[i] = (Element)articleNodeList.item( i ); } return ret ; }

Чтобы пользователь мог выбирать темы сообщений, нам нужно иметь список всех тем, имеющихся в текущей модели DOM. Для создания списка тематических категорий применяется класс NetNewsBean, который мы и будем рассматривать ближе к концу этой главы. В этом классе используется массив типа String, который создается в методе getTopics, приведенном в листинге 9.16. Обратите внимание на то, что для сортировки объектов Srting в данном массиве необходим метод shell Sort, потому что порядок следования ключей в хэш-таблице непредсказуем.

Листинг 9.16. Метод getTopics (NewsModel.java)

// return exact names of all topics available public String[] getTopics(){ Enumeration keys = clusterHash.keys(); String[] ret = new String[ clusterHash.size() ]; int i = 0; while( keys.hasMoreElements() ){ ret[i++] = (String)keys.nextElement(); } shellSort( ret ); return ret ; }

Метод formatElement, показанный в листинге 9.17, предлагает простой способ вставить текст из объекта art (который соответствует некоторому заголовку) в строку, обычно содержащую информацию относительно разметки HTML. Ниже приводится пример такой форматирующей строки, в которой содержатся теги, показывающие, куда нужно вставить элементы url, headline_text и source:

<tr><td><a href="<%url>"x%headline_text> </a> "&nbsp; from <%source></ tdx/tr>




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