Листинг 8.12. Методы doNewsItemHead и doNewsItemShort (NewsFormatter.java)
// <Newsitem has been hashed, id is attribute private void doNewsItemHead( PrintWriter out, String id ){ out.print("<a href=" + handler + "?id=" + id + "&size=L > " ); out.print("<h3> "); out.print( nodeHash.get("head") ); out.println("</h3> </a> "); out.println(); }
// <Newsitem has been hashed, id is attribute // output with <p> ..</p> formatting private void doNewsItemShort( PrintWriter out, String id ){ // note anchor to full item display out.print("<a href=" + handler + "?id=" + id + "&size=L > " ); out.print("<h3> "); out.print( nodeHash.get("head") ); out.println("</h3> </a> "); Element de = (Element)nodeHash.get("date"); out.print( de.getFirstChild() ); out.println("</p> "); Element ne = (Element)nodeHash.get("short"); String wrk = ne.getFirstChild().getNodeValue().trim() ; if( !(wrk.startsWith("<P") || wrk.startsWith("<p")) ){ out.print("<p> "); } out.print( wrk ); if( !(wrk.endsWith("/p> ") || wrk.endsWith("/P> "))){ out.print("</p> "); } itemsCount++ ; out.println(); }
Как показано в листинге 8.13, метод doNewsItemLong форматирует текст заголовка с помощью тега <h3> . Было бы неплохо усовершенствовать этот метод так, чтобы он допускал возможность изменять указанный формат по мере надобности. Основной текст сообщения форматируется как абзац с помощью тега <р> . Внутри самого текста могут содержаться любые форматирующие теги HTML, но теги <р> всегда будут использоваться для полного текста сообщения.