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

Класс Clip


Элемент clip очень похож на элемент image, что видно из его DTD:

<!ELEMENT clip (titie,description?)>

<!ATTLIST clip format (mp3|mpeg|mov|rm) #REQUIRED length CDATA #IMPLIED size CDATA #IMPLIED src CDATA #REQUIRED>

<!ELEMENT title (#PCDATA)>

Все атрибуты элемента clip имеют тип String, как показано в листинге 6.31. Причина этого заключается в том, что атрибуты length и size имеют свободный формат и допускают включение единиц измерения. Например, атрибут size (размер) может содержать строку типа "1.1 Mb".

Листинг 6.31. Начало кода класса Clip (Clip.java)

package com.XmlEcomBook.Chap06;

import org.w3c.dom.*; import java.io.*;

public class Clip extends Object {

private String format; private String length; private String size; private String src; private String title; private String description;

Одному из конструкторов класса Clip не передается никаких аргументов; этот конструктор создает стандартный объект Clip. Другой конструирует объект Clip на основе объекта DOM Element, как показано в листинге 6.32. В первых четырех строках второго конструктора извлекаются атрибуты элемента clip. Элемент description обрабатывается тем же способом, что элемент description в product и элемент caption в Image, то есть извлекается простой текст XML и хранится в виде строки. Последняя строка второго конструктора извлекает значение элемента ti tl e также в виде строки.

Листинг 6.32. Конструкторы класса Clip (Clip.java)

public Clip() { }

public Clip( Element clipElement ) { format = clipElement.getAttribute( "format" ); length = clipElement.getAttribute( "length" ); size = clipElement.getAttribute( "size" ); src = clipElement.getAttribute( "src" ); NodeList descList = clipElement.getElementsByTagName( "description" ); if( descList.getLength() > 0 ) { Element descElement = (Element)descList.item( 0 ); description = Util.extractMarkupAsText(descElement.getChildNodes()); } title = Util.extractTextFrom( "title", clipElement ); }


В классе Clip также имеются методы setXxx и getXxx для каждого из его шести полей. Они включены в прилагаемый к книге компакт-диск, но здесь не приводятся. Метод toXML аналогичен тем, которые мы изучали ранее для других классов. Как и у других объектов данных, у класса Clip имеется метод для преобразования объекта в код XML. Этот метод показан в листинге 6.33.



Листинг 6.33. Преобразование класса Clip в XML (Clip.java)

public void toXML( XMLWriter writer ) throws IOException { writer.write( "<clip " ); writer.write( "format='" + format + "' " ); if( length != null ) writer.write( "length='" + length + "' " ); if( size != null ) writer.write( "size='" + size + "' " ); writer.writeln( "src='" + src + "'>" ); writer.indent(); writer.writeln( "<title>" + title + "</title>" ); if( description != null ) writer.writeln( "<description>" + description + "</description>" ); writer.unindent(); writer.writeln( "</clip>" ); }

}






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