Класс 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>" ); }
}