13954

Обработка документов XML с использованием средств DOM-анализаторов в языке Java

Лабораторная работа

Информатика, кибернетика и программирование

Абстрактный класс DocumentBuilder определяет интерфейс прикладного программирования – API (Application Program Interface) для получения экземпляров объекта Document из документа XML.

Русский

2014-11-30

244 KB

21 чел.

Лабораторная работа 4-04

Обработка документов XML с использованием средств DOM-анализаторов в языке Java

1. Цель работы

Целью работы является приобретение навыков обработки документов XML с использованием средств DOM XML в языке Java.     

  

2. Состав рабочего места

2.1. Оборудование: IBM-совместимый   персональный компьютер (ПК).

2.2. Программное обеспечение: операционная система Windows, Java 2 SDK версии 1.6 и выше, пакет NetBeans 5.5 и выше.

3. Краткие теоретические сведения

3.1. Доступ к документу XML

Средства реализации DOM-анализаторов на языке Java определены в классах DocumentBuilder и DocumentBuilderFactory пакета javax.xml.parsers.

3.1.1. Класс DocumentBuilder

Абстрактный класс DocumentBuilder определяет интерфейс прикладного программирования – API (Application Program Interface) для получения экземпляров объекта Document из документа XML.

Основными методами класса DocumentBuilder являются методы анализа документа XML:

public Document parse(File f) throws SAXException,

IOException

public abstract Document parse(InputSource is)

throws SAXException, IOException

public Document parse(InputStream is)

    throws SAXException, IOException

public Document parse(InputStream is, String systemId)

throws SAXException, IOException

public Document parse(String uri) throws SAXException,

IOException

В параметре метода задается источник, в котором содержится документ, представленный как экземпляр одного из классов: File, InputSource или InputStream, либо как обращение  к ресурсу URI.  Параметр в systemId четвертом методе задает системный идентификатор, необходимый для разрешения относительных URI.

Получение экземпляра объекта Document для DOM-анализатора выполняется с помощью одного из методов:

public abstract Document newDocument()

public abstract DOMImplementation getDOMImplementation()

Первый метод прямо получает новый экземпляр объекта Document для построения дерева DOM. Второй метод получает объект DOMImplementation, а затем с помощью методов DOM уровня 2 создается новый объект Document.

3.1.2. Класс DocumentBuilderFactory

Класс DocumentBuilderFactory пакета javax.xml.parsers определяет производственный (factory) интерфейс прикладного программирования для конфигурирования и получения DOM-анализатора.

Новый экземпляр этого класса можно получить с помощью метода

public static DocumentBuilderFactory newInstance()

throws FactoryConfigurationError.

Создание нового экземпляра DOM-анализатора с использованием текущих производственных параметров выполняется с помощью метода

public abstract DocumentBuilder newDocumentBuilder()

throws ParserConfigurationException

В классе DocumentBuilderFactory определены также конкретные реализации получения и установки значений параметров конфигурации данного DOM-анализатора.

Так, методы

public boolean isNamespaceAware()

public void setNamespaceAware(boolean awareness)

проверяют возможность работы с пространствами имен или устанавливают возможность работы с пространствами имен (при значении awareness, равном true), а методы

public boolean isValidating()

public void setValidating(boolean validating).

проверяют возможность определения действительности документа XML или устанавливают проверку действительности документа XML (при значении validating, равном true)

По умолчанию значения awareness и validating установлены в false.

Методы 

public boolean isExpandEntityReferences()

public void

setExpandEntityReferences(boolean expandEntityRef)

проверяют возможность DOM-анализатора расширять узлы ссылок на сущности в документе XML или устанавливают возможность расширения узлов ссылок на сущности в документе XML (при значении expandEntityRef, равном true) По умолчанию значение expandEntityRef установлено в true.

Методы

public boolean isIgnoringComments()

public void setIgnoringComments(boolean ignoreComments)

проверяют, игнорирует ли DOM-анализатор комментарии в документе XML или устанавливают режим игнорирования комментариев в документе XML (при значении ignoreComments, равном true) По умолчанию значение ignoreComments установлено в false.

Методы

public boolean isIgnoringElementContentWhitespace()

public void

setIgnoringElementContentWhitespace(boolean whitespace)

проверяют, игнорирует ли DOM-анализатор лишние пробелы в содержимом элемента документа XML или устанавливают режим игнорирования лишних пробелов в содержимом элемента документа XML (при значении whitespace, равном true) По умолчанию значение whitespace установлено в false.

Методы

public boolean isCoalescing()

public void setCoalescing(boolean coalescing)

проверяют, сконфигурирован ли  DOM-анализатор для преобразования узлов типа CDATA в узлы типа Text и присоединяют их к соседнему узлу (если он существует) в документе XML или устанавливают режим такого преобразования  в документе XML (при значении coalescing, равном true) По умолчанию значение coalescing установлено в false.

Методы

public abstract Object getAttribute(String name)

throws IllegalArgumentException

public abstract void setAttribute(String name,

Object value) throws IllegalArgumentException

позволяют пользователю получать или устанавливать значение указанного атрибута в данной реализации.

3.2. Интерфейсы DOM XML в языке Java

Методы, реализующие операции над документом и его элементами, определены в интерфейсах пакета org.w3c.dom как в Java J2SE, так и в J2EE.

3.2.1. Интерфейс DOMImplementation

Интерфейс DOMImplementation обеспечивает методы, которые не зависят от конкретной реализации DOM.

Создание документа выполняется с помощью метода

public Document createDocument(String namespaceURI,

String qualifiedName, DocumentType doctype)

    throws DOMException

где namespaceURI – пространство имен URI,  а qualifiedName – полное имя для создаваемого документа. Параметр  задает тип создаваемого документа (может быть задано значение null).

Метод

public DocumentType

createDocumentType(String qualifiedName,

String publicId, String systemId) throws DOMException

создает пустой узел типа DocumentType с полным именем qualifiedName. Параметры publicId и systemId задают внешний общедоступный идентификатор и внешний системный идентификатор.

Метод

public boolean hasFeature(String feature, String version)

проверяет, реализован ли в данном программном продукте версии version компонент feature.  В качестве значения параметра feature задается наименование компонента, например,  "org.w3c.dom.svg" для SVG, а в качестве значения – версия DOM ("1.0" или "2.0").

Метод

Object getFeature(String feature, String version)

возвращает объект API, реализующий компонент feature для заданной  версии version.  

3.2.2. Интерфейс NodeList

Интерфейс NodeList задает абстрактное представление упорядоченной коллекции узлов. Метод

public int getLength()

возвращает длину коллекции, а метод

public Node item(int index)

возвращает элемент коллекции как узел типа Node (индексация элементов в коллекции начинается с 0).

3.2.3. Интерфейс NamedNodeMap

Интерфейс NamedNodeMap определяет коллекцию узлов – отображение (map), к элементам которой можно обращаться по имени (например, атрибуты узла).

Длину коллекции можно определить с помощью метода

public int getLength().

Получить узел либо по его имени name, либо по URI пространства имен namespaceURI и локальному имени localName можно с помощью методов

public Node getNamedItem(String name)

public Node getNamedItemNS(String namespaceURI,

String localName).

Узел можно также получить по его индексу index с помощью метода

public Node item(int index).

Добавить новый узел в конец списка узлов или заменить существующий узел можно с помощью одного из методов

public Node setNamedItem(Node arg)

                 throws DOMException

public Node setNamedItemNS(Node arg)

                   throws DOMException

Первый метод использует в качестве параметра arg имя узла (значение nodeName), второйзначения namespaceURI и localName для узла. Если заменяется существующий узел, возвращается замененный узел, иначе возвращается null.

И, наконец, удалить узел можно с помощью одного из методов

public Node removeNamedItem(String name)

throws DOMException

public Node removeNamedItemNS(String namespaceURI,

    String localName) throws DOMException.

Первый метод удаляет узел с заданным именем name, второйс заданным URI пространства имен namespaceURI и локальным именем localName.

3.2.4. Интерфейс Node

Интерфейс Node представляет единичный узел и является, как видно из рисунка, первичным типом данных для всей объектной модели документа.

Поля интерфейса Node (с модификаторами public static final short) описывают тип узла:

  •  ATTRIBUTE_NODE (2)– узел  типа Attr, содержит атрибут элемента;
  •  CDATA_SECTION_NODE (4) – узел типа CDADASection;  
  •  COMMENT_NODE (8) – узел типа Comment;
  •  DOCUMENT_FRAGMENT_NODE (11) – узел типа DocumentFragment;
  •  DOCUMENT_NODE (9) – корневой узел типа Document;
  •  DOCUMENT_TYPE_NODE (10) – узел типа DocumentType;
  •  ELEMENT_NODE (1) – узел типа Element;
  •  ENTITY_NODE (6) – узел типа Entity;
  •  ENTITY_REFERENCE_NODE (5) –  узел   типа  EntityReference;   
  •  NOTATION_NODE (12) – узел типа Notation;
  •  PROCESSING_INSTRUCTION_NODE (7) – узел типа ProcessingInstruction;
  •  TEXT_NODE (3) – узел типа Text.

Методы интерфейса Node описывают действия с узлом дерева.

Проверить, поддерживается компонент для версии в узле можно с помощью метода

 public boolean isSupported(String feature, String version)

(этот метод действует аналогично методу hasFeature  в интерфейсе DOMImplementation).

Узнать тип узла, имя узла и  значение, хранящееся в узле можно с помощью методов

public short getNodeType()

public String getNodeName()

public String getNodeValue()

Установить новое значение для узла можно с помощью метода

public void setNodeValue(String nodeValue)

throws DOMException.

Методы

public String getLocalName()

public String getNamespaceURI()

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

public String getPrefix()

public void setPrefix(String prefix) throws DOMException

позволяют получить или установить префикс пространства имен для узла.

Проверить, есть ли атрибуты у элемента XML, можно с помощью метода

public boolean hasAttributes().

Атрибуты, заданные для узла, возвращает метод

public NamedNodeMap getAttributes().

Если у элемента нет атрибутов, этот метод  возвращает null.  

Метод

public boolean hasChildNodes()

проверяет, есть ли у данного узла узлы-потомки. Если они есть, то можно получить их список в виде объекта типа NodeList с помощью метода

public NodeList getChildNodes().

Первый и последний узлы в этом списке можно получить с помощью методов

public Node getFirstChild()

public Node getLastChild().

Родительский узел данного узла можно получить с помощью метода

public Node getParentNode(),

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

public Node getPreviousSibling()

public Node getNextSibling().

Первый метод возвращает предыдущий узел, второй – следующий узел (если такого узла нет, возвращается null).

Ссылку на весь документ можно получить с помощью метода

public Document getOwnerDocument().

Большая группа методов интерфейса Node позволяет изменить дерево объектов. Добавить новый дочерний узел newChild как последний в списке узлов можно с помощью метода

public Node appendChild(Node newChild) throws DOMException.

Вставить новый дочерний узел newChild перед существующим дочерним узлом  refChild можно с помощью метода

public Node insertBefore(Node newChild, Node refChild)

throws DOMException,

Заменить дочерний узел oldChild новым узлом newChild можно с помощью метода 

public Node replaceChild(Node newChild,   Node oldChild)

throws DOMException,

а удалить дочерний узел child можно с помощью метода

public Node removeChild(Node child) throws DOMException.

Создать копию узла можно с помощью метода

public Node cloneNode(boolean deep).

Если параметр deep задан как true, то копируется также и поддерево для узла, иначе копируется только сам узел и его атрибуты (если они есть).

Метод

public void normalize()

преобразует узлы типа Text в поддереве данного узла в нормальную форму, т.е. в такую форму, в которой нет смежных текстовых узлов (эти узлы сливаются в один узел) или пустых текстовых узлов (такие узлы удаляются).

3.2.5. Интерфейсы Document, DocumentFragment и DocumentType

Интерфейс Document помимо методов интерфейса Node, содержит  методы работы с документом в целом.

Следует иметь в виду, что в отличие от модели DOM для JavaScript, документ не содержит дочернего узла с именем xml (этот узел типа PROCESSING_INSTRUCTION_NODE содержит дескриптор <?xml …?>).    

Метод

public DocumentType getDocType()

возвращает объект типа DocumentType (DTD документа).

Метод

public DOMImplementation getImplementation()

возвращает объект DOMImplementation, который обрабатывает данный документ (приложение DOM может использовать объекты из разных реализаций).

Метод

public Element getDocumentElement()

возвращает корневой элемент дерева объектов, а методы

public NodeList getElementsByTagName(String)

public NodeList getElementsByTagNameNS(String namespaceURI,

    String localName)

возвращают все элементы либо с указанным именем tagname, либо с заданным URI пространства имен namespaceURI и локальным именем localName.

Метод

public Element getElementById(String elementId)

возвращает элемент, значение атрибута с именем id которого равно elementId.

Несколько методов позволяют изменить структуру и содержимое дерева объектов.

Создание нового пустого элемента или атрибута выполняется с помощью методов

public Element createElement(String tagName)

throws DOMException

public Element createElementNS(String namespaceURI,

    String localName) throws DOMException

public Attr createAttribute(String name)

throws DOMException

public Attr createAttributeNS(String namespaceURI,

    String qualifiedName) throws DOMException

создают узел или атрибут либо по имени (tagName или name), либо по заданному URI пространства имен namespaceURI и локальному имени localName.

Методы

public CDATASection createCDATASection(String data)

throws DOMException

public EntityReference createEntityReference(String name)

throws DOMException

public ProcessingInstruction

createProcessingInstruction(String target,

String data) throws DOMException

public Text createTextNode(String data)

throws DOMException

public Comment createComment(String data)

throws DOMException

создают узлы типа CDATASection, EntityReference, ProcessingInstruction, Text и Comment.

Метод

public Node importNode(Node importedNode, boolean deep)

throws DOMException

импортирует (копирует) узел из другого документа в данный документ. Возвращаемый узел не имеет родительского узла. Если для параметра задано значение true, то копируется также поддерево данного узла.

Интерфейс DocumentFragment используется для выделения части дерева документа или для создания нового фрагмента документа. Интерфейс не имеет собственных свойств и методов, а только свойство и методы, унаследованные от интерфейса Node.

Создать узел типа  DocumentFragment – фрагмент данного документа можно с помощью метода

public DocumentFragment createDocumentFragment()

интерфейса Document.

Интерфейс DocumentType обеспечивает доступ к DTD документа XML. Помимо свойств и методов, унаследованных от интерфейса Node, для DocumentType определены следующие методы.

Метод

public String getName()

позволяет получить имя DTD, т.е. идентификатор, следующий сразу за ключевым словом DOCTYPE, а метод

public String getInternalSubset()

позволяет получить содержимое внутреннего DTD как строку.

Методы

public String getPublicId()

public String getSystemId()

позволяют получить общедоступный или системный идентификатор для внешнего DTD.

Методы

public NamedNodeMap getEntities()

public NamedNodeMap getNotations()

позволяют получить определенные в DTD сущности и нотации как узлы типа NamedNodeMap.

3.2.6. Интерфейс Element

Интерфейс Element добавляет к методам своего родительского элемента Node методы работы с атрибутами элемента XML и методы, позволяющие обратиться к вложенным элементам.

Метод

public String getTagName()

возвращает имя элемента.

Методы

public NodeList getElementsByTagName(String name)

public NodeList getElementsByTagNameNS(String namespaceURI,

String localName)

позволяют получить коллекцию дочерних узлов данного элемента либо с заданным именем name,  либо с заданным URI пространства имен namespaceURI и локальным именем localName.

Проверить наличие у элемента атрибута с именем name, либо по заданному URI пространства имен namespaceURI и локальному имени localName можно с помощью методов

public boolean hasAttribute(String)

public boolean hasAttributeNS(String namespaceURI,

String localName).

Получить атрибут в виде объекта типа Attr или его значение в виде строки по имени name, либо по заданному URI пространства имен namespaceURI и локальному имени localName можно с помощью методов

public Attr getAttributeNode(String name);

public Attr getAttributeNodeNS(String namespaceURI,

String localName)

public String getAttribute(String name);

public String getAttributeNS(String namespaceURI,

String localName).

Установить значение атрибута value можно с помощью методов

public void setAttribute(String name, String value)

throws DOMException

public void setAttributeNS(String namespaceURI,

String qualifiedName, String value)

throws DOMException.

Создание нового атрибута как узла типа Attr или изменение существующего узла типа Attr выполняется с помощью методов

public Attr setAttributeNode(Attr newAttr)

throws DOMException

public Attr setAttributeNodeNS(Attr newAttr)

throws DOMException

Первый метод добавляет или замещает узел по его имени, второй – по URI пространства имен и локальному имени.

Удалить атрибут с именем name, либо с заданным URI пространства имен namespaceURI и локальным именем localName можно с помощью методов

public void removeAttribute(String name)

throws DOMException

public void removeAttributeNS(String namespaceURI,

    String localName) throws DOMException.

Удаление атрибута как узла типа Attr с именем name выполняется с помощью метода

public Attr removeAttributeNode(Attr name)

throws DOMException.

3.2.7. Интерфейс Attr

Интерфейс Attr представляет атрибут элемента типа Element.

Помимо свойств и методов, унаследованных от интерфейса Node, в интерфейсе определены следующие методы.

Методы

public String getName()

public String getValue()

позволяют получить имя и значение атрибута. Значение атрибута можно изменить с помощью метода

public void setValue(String value) throws DOMException.

Получить элемент типа Element, для которого определен данный атрибут можно с помощью метода

public Element getOwnerElement().

Если узел типа Attr не связан ни с одним элементом, возвращается null.

Метод

public boolean getSpecified()

возвращает true, если атрибуту присвоено значение в документе  и false – в противном случае.

3.2.8. Интерфейсы CharacterData, Text, Comment и CDATASection

Интерфейс CharacterData расширяет интерфейс Node набором методов для доступа к символьным данным.

Метод

public int getLength()

позволяет получить длину символьных данных в 16-битовых единицах.

Получить символьные данные можно с помощью одного из методов

public String getData() throws DOMException

public String substringData(int offset, int count)

throws DOMException.

Первый метод возвращает все символьные данные, а второй – подстроку символьных данных, начиная с позиции offset длиной count.

Задать новые значения символьных данных можно с помощью метода

public void setData(String data) throws DOMException.

Метод

public void appendData(String arg) throws DOMException

добавляет строку arg в конец символьных данных, метод

public void insertData(int offset, String arg)

throws DOMException

добавляет строку arg в символьные данные, начиная с позиции offset, а метод

public void replaceData(int offset, int count, String arg)

throws DOMException

замещает в символьных данных подстроку, начиная с позиции offset и длиной    count строкой arg.

Метод

public void deleteData(int offset, int count)

throws DOMException

удаляет из символьных данных подстроку длиной count, начиная с позиции offset.

Интерфейс Text является наследником интерфейса CharacterData и представляет текстуальное содержимое элемента или атрибута (узла типа Element или Attr). Своих свойств и методов интерфейс не имеет, а наследует все свойства и методы  интерфейса CharacterData.

Интерфейс Comment также является  наследником интерфейса CharacterData и представляет текстуальное содержимое комментария. Этот интерфейс также не имеет своих свойств и методов.

Интерфейс CDATASection является наследником интерфейса Text и представляет текстуальное содержимое секций CDATA документа XML. Этот интерфейс также не имеет своих свойств и методов.

3.2.9. Интерфейсы Entity, EntityReference, Notation и ProcessingInstruction

Интерфейс Entity определяет анализируемую или неанализируемую сущность в документе XML. Для него определены только свойства и методы, унаследованные от интерфейса Node.

Интерфейс EntityReference определяет ссылки на анализируемые  или неанализируемую сущности в документе XML. Для него также определены только свойства и методы, унаследованные от интерфейса Node.

Интерфейс Notation определяет нотации в документе XML. Помимо свойств и методов, унаследованных от интерфейса Node, для него определены методы

public String getPublicId()

public String getSystemId(),

позволяющие получить общедоступный или системный идентификатор для данной нотации.

Интерфейс ProcessingInstruction определяет инструкции по обработке для процессора XML в документе XML. Помимо свойств и методов, унаследованных от интерфейса Node, для него определен метод получения имени инструкции по обработке

public String getTarget(),

а также методы

public String getData()

public void setData(String data) throws DOMException,

позволяющие получить или установить данные для инструкции по обработке.

3.2.10. Исключение DOMException

Многие методы пакета org.w3c.dom бросают исключение DOMException.

Объект класса DOMException создается с помощью конструктора

public DOMException(short code, String message)

в котором задается числовой код code ошибки и сообщение message, выводимое при ошибке.

Код ошибки содержится в поле

public short code

класса DOMException. Другие поля этого класса (с модификаторами public static final short) содержат целые переменные, позволяющие определить причину возникновения ошибки:

  •  DOMSTRING_SIZE_ERR – если заданная строка не помещается в другую строку;
  •  HIERARCHY_REQUEST_ERR – если узел вставляется туда, где он не может находиться;
  •  INDEX_SIZE_ERR – если индекс или размер являются отрицательными числами, либо превышают допустимое значение;
  •  INUSE_ATTRIBUTE_ERR – попытка добавления атрибута, используемого в другом месте;
  •  INVALID_ACCESS_ERR – если параметр и операция не поддерживаются объектом;
  •  INVALID_CHARACTER_ERR – если используется неверный или недопустимый символ (например, в имени);
  •  INVALID_MODIFICATION_ERR – если предпринята попытка изменить тип объекта;
  •  INVALID_STATE_ERR – если  предпринята попытка использовать объект, который нельзя использовать;
  •  NAMESPACE_ERR – если  предпринята попытка создать или изменить объект без учета пространства имен;
  •  NO_DATA_ALLOWED_ERR – если данные определены для узла, который их не поддерживает;
  •  NO_MODIFICATION_ALLOWED_ERR – если  предпринята попытка модифицировать объект, который нельзя модифицировать;
  •  NOT_FOUND_ERR – если предпринята попытка ссылки на узел в контексте, в котором данный узел не существует;
  •  NOT_SUPPORTED_ERR – если реализация не поддерживает запрашиваемый тип объекта или операцию;
  •  SYNTAX_ERR – если определена неверная или незаконная строка;
  •  WRONG_DOCUMENT_ERR – если узел используется не в том документе, в котором он был создан.

3.3. Средства выполнения преобразований документов XML в языке Java  

Общие средства выполнения преобразований документов XML определены в пакете javax.xml.transform. Реализация этих средств для DOM-анализаторов и SAX-анализаторов описаны в пакетах javax.xml.transform.dom и javax.xml.transform.sax. Средства преобразования для потоков ввода-вывода и URI описаны в пакете javax.xml.transform.stream.

3.3.1. Общие средства выполнения преобразований документов XML

Основными интерфейсами пакета являются интерфейсы Source и Result. Объекты, реализующие интерфейс Source, содержат информацию, необходимую для того, чтобы выступать в качестве источника ввода, а объекты,    реализующие интерфейс Result, содержат информацию, необходимую для построения результирующего дерева преобразования.

Интерфейсы содержат по два одинаковых метода

public String getSystemId()

public void setSystemId(String systemId),

позволяющих получить или установить системный идентификатор для источника или результата.

Кроме того, интерфейс содержит два строковых поля с модификаторами public static final: поле PI_DISABLE_OUTPUT_ESCAPING, определяющее имя инструкции по обработке, посылаемую, если в результирующем дереве отключено удаление символов (обычно при сериализации отключается вывод символов "&", "<" в выходное дерево) и поле PI_ENABLE_OUTPUT_ESCAPING, определяющее имя инструкции по обработке, посылаемую, если в результирующем дереве включено удаление символов.

Интерфейс SourceLocator содержит методы, определяющие местоположение ошибки в источнике XML или инструкции преобразования.

Метолы этого интерфейса

public int getLineNumber()

public int getColumnNumber()

public String getPublicId()

public String getSystemId()

возвращают номер строки, номер позиции в строке, а также общедоступный или системный идентификатор для текущего события документа.

Объект, реализующий интерфейс Templates является представлением времени выполнения для обрабатываемой инструкции преобразования.

Метод

public Properties getOutputProperties()

позволяет получить статические свойства для xsl:output, а метод

public Transformer newTransformer()

throws TransformerConfigurationException

создает новый контекст преобразования для данного объекта Transformer.

Объект, реализующий интерфейс URIResolver для преобразования URI, используемого в документе – xsl:import  или xsl:include в объект Source. Единственный метод этого интерфейса

public Source resolve(String href, String base)

              throws TransformerException

вызывается процессором XML, когда он встречает элементы xsl:include, xsl:import или функцию.

Интерфейс ErrorListener определяет три метода для получения уведомления о серьезной ошибке, восстановимой ошибке и предупреждении при выполнении операций преобразования:

public void fatalError(TransformerException exception)

throws TransformerException

public void error(TransformerException exception)

throws TransformerException

public void warning(TransformerException exception)

throws TransformerException

Абстрактный класс Transformer определяет объекты, которые могут использоваться для преобразования из исходного дерева в результирующее дерево.

Основной метод этого класса

public abstract void transform(Source xmlSource,

Result outputTarget) throws TransformerException

выполняет преобразование исходного дерева xmlSource в результирующее дерево outputTarget.

Остальные методы позволяют получить или установить отдельные свойства преобразования.

Так, методы 

public abstract Object getParameter(String name)

public abstract void setParameter(String name,

Object value)

public abstract void clearParameters()

позволяют соответственно получить, установить или очистить параметры преобразования.

Методы

public abstract Properties getOutputProperties()

public abstract void

setOutputProperties(Properties oformat)

    throws IllegalArgumentException

позволяют получить или установить выходные свойства как объекты класса Properties, а методы

public abstract String getOutputProperty(String name)

throws IllegalArgumentException

public abstract void setOutputProperty(String name,

    String value) throws IllegalArgumentException

позволяют получить или установить одно выходное свойство как строковый объект.

Методы

public abstract URIResolver getURIResolver()

public abstract void setURIResolver(URIResolver resolver)

позволяют получить или установить объект, который будет использоваться для разрешения URI, используемых в документе.

И, наконец, методы

public abstract ErrorListener getErrorListener()

public abstract void

setErrorListener(ErrorListener listener)

throws IllegalArgumentException

позволяют получить или установить блок прослушивания событий ошибок для данного преобразования.

Абстрактный класс TransformerFactory позволяет создать объекты класса Transformer и интерфейса Templates.

Объект этого класса создается с помощью производственного метода

public static TransformerFactory newInstance()

throws TransformerFactoryConfigurationError,

Объект класса Transformer создается с помощью одного из методов:

public abstract Transformer newTransformer()

throws TransformerConfigurationException

public abstract Transformer newTransformer(Source source)

throws TransformerConfigurationException. 

Первый метод создает объект Transformer, который преобразует копию источника в результат, а второй метод преобразует объект интерфейса Source в объект Transformer.

Объект интерфейса Templates создается с помощью метода 

public abstract Templates newTemplates(Source source)

throws TransformerConfigurationException.

Метод 

public abstract Source

getAssociatedStylesheet(Source source,

String media, String title, String charset)

    throws TransformerConfigurationException

позволяет получить связанную с источником таблицу стилей (определенную в документе XML с помощью инструкции по обработке xml-stylesheet).

Метод

public abstract boolean getFeature(String name)

позволяет получить заданное свойство, задаваемое в форме абсолютного URI).

Методы

public abstract Object getAttribute(String name)

throws IllegalArgumentException

public abstract void setAttribute(String name,

Object value) throws IllegalArgumentException

позволяют пользователю получать или устанавливать значение указанного атрибута в данной реализации.

Остальные методы класса: getErrorListener(),setErrorListener(),  getURIResolver() и setURIResolver()дублируют соответствующие методы класса Transformer.

Класс OutputKeys обеспечивает строковые константы, которые используются либо для установки выходных свойств класса Transformer, либо для получения выходных свойств объектов Transformer или Templates.   

Имена свойств задаются следующими строковыми константами класса OutputKeys с модификаторами public static final:

  •  CDATA_SECTION_ELEMENTSсписок  имен секций CDATA;
  •  DOCTYPE_PUBLIC –  общедоступный  идентификатор преобразованного документа;
  •  DOCTYPE_SYSTEM –  системный   идентификатор   преобразованного  документа;
  •  ENCODING – кодировка символов преобразованного документа;
  •  INDENT – делать ли отступы: "yes" или "no";
  •  MEDIA_TYPE – MIME-тип содержимого преобразованного документа;
  •  METHOD – одно из значений "xml", "html" или "text"',
  •  OMIT_XML_DECLARATION – не включать объявление XML:  "yes" или "no";
  •  STANDALONE — отдельный или вложенный документ: "yes" или "no";
  •  VERSION – номер версии.

Например, можно задать кодировку символов преобразованного документа следующим методом:

transformer.setOutputProperty(

OutputKeys.ENCODING, "Windows-1251"

);

Правда, в этом случае все символы кириллицы будут представлены как сущности – десятичные коды символов Unicode. По умолчанию используется кодировка "UTF-8".

Класс TransformerException определяет исключительную ситуацию, которая может случиться во время выполнения операции преобразования.

Основным конструктором этого класса является конструктор

public TransformerException(String message,

SourceLocator locator, Throwable e)

который создает объект-исключение с заданным текстом сообщения message, объектом locator интерфейса SourceLocator и являющийся оболочкой для исключения e. В остальных конструкторах задаются один или два из приведенных параметров.

Методы 

public Throwable getCause()

public Throwable getException()

public String getLocationAsString()

public SourceLocator getLocator()

public String getMessageAndLocation()

позволяют получить причину появления исключения; класс исключения, для которого данное исключение служит оболочкой, получить информацию о местоположении исключения как строку или объект интерфейса SourceLocator, и, наконец, получить и текст сообщения, и местоположение ошибки.

Метод

public Throwable initCause(Throwable cause)

инициализирует причину данного исключения и приводит его к другому исключению, а метод

public void setLocator(SourceLocator location)

устанавливает объект интерфейса SourceLocator.

Методы 

public void printStackTrace()

public void printStackTrace(PrintStream s)

public void printStackTrace(PrintWriter s)

переопределяют соответствующие методы класса Throwable и выводят трассировку ошибки на дисплей, в байтовый или символьный поток.

Класс TransformerConfigurationException, расширяющий класс TransformerException, указывает на серьезную ошибку конфигурации. Так же, как и в классе TransformerException, основным конструктором является конструктор

public TransformerConfigurationException(String message,

SourceLocator locator, Throwable e),

а в остальных конструкторах задается один или два параметра из параметров данного конструктора.

Своих методов класс TransformerConfigurationException не имеет.

3.3.2. Средства преобразования для DOM-анализатора

Средства преобразования для DOM-анализатора реализованы в пакете javax.xml.transform.dom.

Интерфейс DOMLocator расширяет интерфейс SourceLocator и содержит единственный метод

public Node getOriginatingNode(),

возвращающий узел, в котором произошло событие.

Класс DOMSource действует как хранилище для преобразования дерева объекта Source, представленного в форме дерева DOM.

Конструкторы класса

public DOMSource()

public DOMSource(Node n)

public DOMSource(Node node, String systemID)

Первый и второй конструкторы создают соответственно пустой объект и объект для заданного узла n (новый источник ввода создается для поддерева этого узла). Третий конструктор задает дополнительно системный идентификатор в форме базового URI.

В классе DOMSource задано поле

public static final String FEATURE.

Если метод getFeature() класса TransformerFactory возвращает true для значения FEATURE, указанного в качестве аргумента метода, то объект Transformer поддерживает источник ввода данного типа.

Методы

public Node getNode()

public void setNode(Node node)

позволяют получить или установить исходное дерево DOM, а с помощью методов

public String getSystemId()

public void setSystemId(String baseID)

можно получить или установить системный идентификатор в форме базового URI.

Класс DOMResult действует как хранилище для преобразования результирующего дерева в форме дерева DOM.

Конструкторы класса

public DOMResult()

public DOMResult(Node n)

public DOMResult(Node node, String systemID)

Первый и второй конструкторы создают соответственно пустой объект и вывода для заданного узла n (это должен быть либо узел типа Document, либо узел DocumentFragment, либо узел типа  Element, т.е. узел, который может иметь дочерние узлы). Третий конструктор задает дополнительно системный идентификатор в форме базового URI.

В классе DOMResult задано поле

public static final String FEATURE.

Если метод getFeature() класса TransformerFactory возвращает true для значения FEATURE, указанного в качестве аргумента метода, то объект Transformer поддерживает адресат вывода данного типа.

Методы 

public Node getNode()

public void setNode(Node node)

позволяют получить или установить выходное дерево DOM (узел node должен иметь один из типов, перечисленных выше).  Методы getSystemId() и setSystemId() действуют аналогично соответствующим методам класса DOMSource.

3.3.3. Средства преобразования для потоков ввода-вывода

Средства преобразования для потоков ввода-вывода определены в классах StreamSource и StreamResult пакета javax.xml.transform.stream.

Класс StreamSource действует как хранилище для источника преобразования в виде потока разметки XML.

Конструкторы класса

public StreamSource()

public StreamSource(File f)

public StreamSource(InputStream inputStream)

public StreamSource(InputStream inputStream,

String systemId)

public StreamSource(Reader reader)

public StreamSource(Reader reader, String systemId)

public StreamSource(String systemId)

создают соответственно пустой входной поток, входной поток из файла, байтовый входной поток, байтовый входной поток с заданного системного идентификатора, символьный входной поток,  символьный входной поток с заданного системного идентификатора, и, наконец, входной поток с заданного системного идентификатора.

В классе StreamSource задано поле

public static final String FEATURE.

Если метод getFeature() класса TransformerFactory возвращает true для значения FEATURE, указанного в качестве аргумента метода, то объект Transformer, поддерживает входной источник данного типа.

Методы класса позволяют получить или установить источники входного потока.

Так, методы

public InputStream getInputStream()

public void setInputStream(InputStream inputStream)

получают и устанавливают байтовый входной поток для источника, а методы

public Reader getReader()

public void setReader(Reader reader)

выполняют те же операции для символьного потока.

Методы

public String getPublicId()

public void setPublicId(String publicId)  

получают и устанавливают общедоступный идентификатор для источника, а методы

public String getSystemId()

public void setSystemId(String systemId)

выполняют те же операции для системного идентификатора.

Метод

public void setSystemId(File f)

позволяет получить системный идентификатор из ссылки на файл

Класс StreamResult действует как хранилище для результата преобразования, который может быть  документом XML или HTML, либо текстовым документом.

Конструкторы класса

public StreamResult()

public StreamResult(File f)

public StreamResult(OutputStream outputStream)

public StreamResult(String systemId)

public StreamResult(Writer writer)

создают соответственно пустой выходной поток, входной поток в файл, байтовый выходной поток, выходной поток в заданный системный идентификатор или  символьный выходной поток.   

В классе StreamResult задано поле

public static final String FEATURE.

Если метод getFeature() класса TransformerFactory возвращает true для значения FEATURE, указанного в качестве аргумента метода, то объект Transformer, поддерживает выходной адресат данного типа.

Методы класса позволяют получить или установить адресаты выходного потока.

Так, методы

public OutputStream getOutputStream()

public void setOutputStream(OutputStream outputStream)

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

public Writer getWriter()

public void set Writer(Writer writer)

выполняют те же операции для символьного выходного потока.

Методы 

public String getSystemId()

public void setSystemId(String systemId)

получают и устанавливают общедоступный идентификатор для адресата, а метод

public void setSystemId(File f)

позволяет получить системный идентификатор из ссылки на файл.

4. Порядок выполнения работы

Создайте программу просмотра содержимого документа  XML (XML-браузер) для документа XML, созданного в  лабораторной работы 10-1 и измененного в лабораторной работе 10-2.  Программа должны являться графическим приложением с использованием средств Swing и средств DOM-анализатора. Структура окна задается с использованием менеджера компоновки BorderLayout. Графические элементы окна и выполняемые ими действия программируются в соответствии с вариантом лабораторной работы. Предполагается, что документ XML и схема XML являются действительными и документ XML соответствует своей схеме.

Вариант 4-01

Окно приложения  должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите автора:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод статей" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html"(центральная панель).

Выбор автора статьи (значения элемента author) выполняется в раскрывающемся меню "Выберите автора:". После выбора автора и нажатия кнопки "Вывод статей" в  панели редактирования выводятся характеристики книг заданного автора (заголовок, список авторов  и резюме) с соответствующими пояснительными записями, выполненными жирным шрифтом.

Вариант 4-02

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите пакет:" (класса JLabel) (западная панель);
  •  текстовая область (класса JTextArea) с подсказкой "Описание:" (класса JLabel) (восточная панель);
  •  раскрывающееся меню (класса JComboBox) с подсказкой "Интерфейс:" (класса JLabel) (восточная панель);
  •  раскрывающееся меню (класса JComboBox) с подсказкой "Класс:" (класса JLabel) (восточная панель);
  •  раскрывающееся меню (класса JComboBox) с подсказкой "Исключение:" (класса JLabel) (восточная панель);
  •  раскрывающееся меню (класса JComboBox) с подсказкой "Ошибка:" (класса JLabel) (восточная панель);
  •  кнопка (класса JButton) "Вывод пакета" (южная панель).

Выбор имени пакета (значения атрибута name в  элементе packet) выполняется в раскрывающемся меню "Выберите пакет:". При нажатии кнопки "Вывод пакета" в текстовой области "Описание:" выводится описание пакета (значение элемента description), а в раскрывающихся меню "Интерфейс:", "Класс:", "Исключение:" и "Ошибка:"  выводятся имена интерфейсов, классов, исключений и ошибок выбранного пакета (значений атрибута name в соответствующих элементах). При выборе имени интерфейса, класса, исключения или ошибки в  текстовой области "Описание:" выводится текстовое содержимое соответствующего элемента.

Вариант 4-03

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите раздел:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод статей" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

Элементами раскрывающегося меню "Выберите раздел:" являются допустимые значения атрибута section в элементе article. После выбора раздела и нажатия кнопки "Вывод статей" в  панели редактирования выводятся характеристики статей для заданного раздела (заголовок, список авторов  и аннотация). Заголовок выводится жирным шрифтом, список авторов – красным цветом, резюме – курсивом.

Вариант 4-04

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите процессор:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод компьютеров" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

Элементами раскрывающегося меню "Выберите процессор:" являются значения элемента processor в документе.

После выбора процессора и нажатия кнопки "Вывод компьютеров" в  панели редактирования выводятся наименования и значения характеристик компьютеров с заданным процессором.  Наименования характеристик выводятся жирным шрифтом, значения – курсивом.  

Вариант 4-05

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите автора:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод книг" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

Элементами раскрывающегося меню "Выберите автора:" являются авторы книг.

После выбора автора и нажатия кнопки "Вывод книг" в  панели редактирования появляется список сведений о книгах заданного автора (наименование книги, номер издания, авторы, издательство и год издания).  Наименование и номер издания выводится жирным шрифтом, автор книги – жирным курсивом с выравниванием вправо, издательство и год издания – курсивом.

Вариант 4-06

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите специальность:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод учебников" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

Элементами раскрывающегося меню "Выберите специальность:" являются допустимые значения атрибута specialty в элементе manual.

После выбора специальности и нажатия кнопки "Вывод учебников" в  панели редактирования появляется список сведений об учебниках по заданной специальности (наименование учебника, номер издания, авторы и аннотация).

Наименование и номер издания выводится жирным шрифтом, авторы учебника – жирным курсивом с выравниванием вправо, аннотация – курсивом.  

Вариант 4-07

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите производителя:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод товаров" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

Элементами раскрывающегося меню "Выберите производителя:" являются значения атрибута producer в элементе product.

После выбора производителя и нажатия кнопки "Вывод товаров" в  панели редактирования появляется список сведений о товарах заданного производителя (категория, спецификация, дополнительные сведения, цена, количество проданного товара, количество товара на складе и количество заказанного товара). Наименование товара и заголовки характеристик товара выводятся жирным шрифтом, значения характеристик – обычным шрифтом.

Вариант 4-08

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите автора:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод работы" (южная панель);
  •  текстовая область (класса JTextArea) с подсказкой "Тема:" (класса JLabel) (центральная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

Элементами раскрывающегося меню "Выберите автора:" являются значения элемента fio.

После выбора автора и нажатия кнопки "Вывод работы"  тема выбранного автора выводится в текстовой области "Тема:".  Остальные характеристики задания выбранного автора (дата окончания работы, входные данные, наименования разделов, наименования плакатов, консультанты и календарный план) выводятся в панели редактирования. Элементы consulting и calendar-plan выводятся в виде таблицы.

Вариант 4-09

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите букву:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод методов" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора буквы и нажатия кнопки "Вывод методов"  в панели редактирования появляется список характеристик методов, начинающихся на заданную букву.  Характеристики методов (описание, имя класса, модификаторы, возвращаемое значение, параметры исключения и версия) выводятся с соответствующими пояснительными надписями, выполненными жирным шрифтом. Номера, типы и значения параметров выводятся в виде таблицы.   

Вариант 4-10

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите тему:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод работы" (южная панель);
  •  текстовая область (класса JTextArea) с подсказкой "Автор:" (класса JLabel) (центральная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

Элементами раскрывающегося меню "Выберите тему:" являются значения элемента theme.

После выбора автора и нажатия кнопки "Вывод работы"  автор работы выводится в текстовой области "Тема:".    Остальные характеристики диплома для выбранной темы (специальность, краткое изложение задач, введение, разделы, заключение, список литературы и дата окончания выполнения работы) выводятся в панели редактора.

Специальность выводится жирным шрифтом, краткое изложение задач и дата окончания выполнения работы – курсивом.  

Вариант 4-11

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите дисциплину:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод расписания" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

Выбор дисциплины (значения элемента subject) выполняется в раскрывающемся меню "Выберите дисциплину:". После нажатия кнопки "Вывод расписания"  в панели редактирования выводится расписание занятий по заданной дисциплине. Промежуток времени, преподаватель и аудитория выводятся в панели редактирования в виде таблицы с соответствующими заголовками, выполненными жирным шрифтом.

Вариант 4-12

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите специальность:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод программ" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора специальности (значения элемента specialty) и нажатия кнопки "Вывод программ"  в панели редактирования выводятся характеристики рабочих программ по заданной дисциплине (общие сведения, цели и задачи дисциплины, вопросы, рассматриваемые в лекциях, практических занятиях и семинарах, темы лабораторных работ, методические указания, список литературы, фамилия, имя, отчество преподавателя и дата окончания составления программы)   с соответствующими заголовками и пояснительными записями, выполненными жирным шрифтом.

Вариант 4-13

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите букву:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод полей" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора буквы, на которую начинается имя поля (значение элемента field) и нажатия кнопки "Вывод полей" в панели редактирования выводятся характеристики полей, начинающихся на заданную букву (описание, имя класса, в котором определено данное поле, тип, значение и версия) с соответствующими пояснительными надписями, выполненными жирным шрифтом.

Вариант 4-14

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите аэропорт назначения:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод расписания" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора аэропорта назначения  (значение атрибута destination-airport элемента airplane-table) и нажатия кнопки "Вывод расписания" в панели редактирования выводятся характеристики рейсов в заданный  аэропорт назначения  (номер рейса, время вылета, время прилета и тип самолета) с соответствующими пояснительными надписями, выполненными жирным шрифтом.

Вариант 4-15

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите исполнителя:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод тем" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора исполнителя  (значения author) и нажатия кнопки "Вывод тем" в панели редактирования выводятся наименования и аннотации тем, в которых участвовал заданный исполнитель с соответствующими пояснительными надписями, выполненными жирным шрифтом.  

Вариант 4-16

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите букву:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод классов" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора буквы, на которую начинается имя класса (значение элемента letter) и нажатия кнопки "Вывод классов" в панели редактирования выводятся характеристики классов, начинающихся на заданную букву (описание, модификаторы, имя суперкласса, списки подклассов, интерфейсов, методов и полей, а также версия) с соответствующими пояснительными надписями, выполненными жирным шрифтом.

Вариант 4-17

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите специальность:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод программ" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора специальности дисциплины (значения элемента specialty) и нажатия кнопки "Вывод программ" в панели редактирования выводятся характеристики учебных программ по заданной дисциплине (наименование дисциплины, общие сведения, цели и задачи дисциплины, наименования разделов и тем, фамилия, имя и отчество преподавателя и дата окончания составления программы) с соответствующими заголовками и пояснительными записями, выполненными жирным шрифтом.

Вариант 4-18

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите заказчика:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод контрактов" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора заказчика (значения элемента fio в элементе director) и нажатия кнопки "Вывод контрактов" в панели редактирования выводятся характеристики контрактов для заданного заказчика (организация заказчика, фамилия, имя и отчество контрактанта, должность контрактанта, список содержимого заданий – в виде таблицы, сроки выполнения работ по контракту, месячная зарплата, условия контракта и собственник результатов работы) с соответствующими заголовками и пояснительными записями, выполненными жирным шрифтом.

Вариант 4-19

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите букву:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод интерфейсов" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора буквы (значение атрибута name в элементе interface) и нажатия кнопки "Вывод интерфейсов" в панели редактирования выводятся характеристики интерфейсов, имена которых начинаются на заданную букву (описание, модификаторы, имена интерфейсов-родителей, имена интерфейсов-потомков, имена и описания полей, имена и возвращаемые значения методов) с соответствующими пояснительными надписями, выполненными жирным шрифтом.

Вариант 4-20

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите порт назначения:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод пакетов" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора порта назначения (значение элемента destination-port) и нажатия кнопки "Вывод интерфейсов" в панели редактирования выводятся характеристики пакетов с заданным портом назначения (порт источника, порядковый номер пакета, номер подтверждения пакета, смещение данных, зарезервированное поле, флажки, размер окна передачи, контрольная сумма заголовка, указатель срочных данных, список опций заголовка, выравнивание размера заголовка и данные пакета) с соответствующими пояснительными надписями, выполненными жирным шрифтом.

Вариант 4-21

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите тип:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод карт" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбор типа основания для работы (значения атрибута type элемента base) и нажатия кнопки "Вывод интерфейсов" в панели редактирования выводятся характеристики карт для заданного типа основания (вид работы, сведения о заказчике работы, наименование работы, аннотация работы, этапы работы – в виде таблицы, сведения об исполнителе работы) с соответствующими пояснительными надписями, выполненными жирным шрифтом.

Вариант 4-22

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите раздел:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод содержимого" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель)

После выбора раздела библиотеки (значение атрибута name в элементе partition) и нажатия кнопки "Вывод содержимого" в панели редактирования выводятся характеристики констант (имя и описание) и функций (имя, описание, тип возвращаемого значения, список параметров функции с их именами, типами и описаниями) с соответствующими пояснительными надписями, выполненными жирным шрифтом.

Вариант 4-23

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите класс-родитель:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод классов" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора имени класса-родителя (значение элемента superclass) и нажатия кнопки "Вывод классов" в панели редактирования выводятся характеристики классов, у которых заданный класс является  классом-родителем (описание, модификаторы, список прямых классов-потомков, список интерфейсов, реализуемых классом, список полей класса, список конструкторов класса, список методов класса и версия) с соответствующими пояснительными надписями, выполненными жирным шрифтом.

Вариант 4-24

Окно приложения, должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите IP-адрес источника:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод дейтаграмм" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора адреса источника (значение элемента source-address) и нажатия кнопки "Вывод дейтаграмм" в панели редактирования выводятся характеристики дейтаграмм с заданным адресом источника (версия протокола, длина заголовка в 32-битовых словах, характеристики обработки дейтаграммы, общая длина дейтаграммы, идентификатор дейтаграммы, флажки, контрольная сумма заголовка, порядковый номер пакета, номер подтверждения пакета, смещение данных, зарезервированное поле, флажки, смещение фрагмента, время жизни, протокол, использующий дейтаграмму, контрольная сумма заголовка, IP-адрес получателя, список опций заголовка, выравнивание размера заголовка и данными дейтаграммы) с соответствующими пояснительными надписями, выполненными жирным шрифтом.

Вариант 4-25

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите исполнителя:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод карт" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора исполнителя (значение элемента name в элементе performer) и нажатия кнопки "Вывод карт" в панели редактирования выводятся характеристики карт для заданного исполнителя (дата регистрации, вид документа по теме, условия распространения работы, внедрение работы, сведения об исполнителе работы, наименование работы, аннотация работы и сведения о владельце результатов работы) с соответствующими пояснительными надписями, выполненными жирным шрифтом.

Вариант 4-26

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите класс:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод методов" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

Выбор имени класса (значение элемента class) и нажатия кнопки "Вывод методов" в панели редактирования выводятся характеристики методов заданного класса (описание, модификаторы, возвращаемое значение, список параметров метода – в виде таблицы или сообщение о том, что метод не имеет параметров, список исключений метода или сообщение о том, что исключений нет,  версия Java, в которой впервые появился метод) с соответствующими пояснительными надписями, выполненными жирным шрифтом.

Вариант 4-27

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите руководителя:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод актов" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора руководителя работы (значения элемента manager) и нажатия кнопки "Вывод методов" в панели редактирования выводятся характеристики актов для заданного руководителя (дата подписания акта, период работы, список выполненных работ – в виде таблицы и общая сумма выплат)   с соответствующими заголовками и пояснительными записями, выполненными жирным шрифтом.

Вариант 4-28

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите канал:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод программы" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора канала (значения элемента channel) и нажатия кнопки "Вывод методов" в панели редактирования выводятся характеристики передач заданного канала (дата расписания, режим канала, данные о передаче – время начала передачи, наименование передачи и описание передачи)   с соответствующими заголовками и пояснительными записями, выполненными жирным шрифтом.

Вариант 4-29

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите интерфейс-родитель:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод интерфейсов" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбора имени родительского интерфейса (один из элементов superinterface в элементе superinterfaces-list) и нажатия кнопки "Вывод интерфейсов" в панели редактирования выводятся характеристики интерфейсов для заданного  родительского интерфейса (описание, модификаторы, возвращаемое значение, список родительских интерфейсов, список прямых интерфейсов-потомков, список полей интерфейса, список методов интерфейса и версия)  с соответствующими пояснительными надписями, выполненными жирным шрифтом.

Вариант 4-30

Окно приложения должно содержать следующие элементы:

  •  раскрывающееся меню (класса JComboBox) с подсказкой "Выберите команду:" (класса JLabel) (западная панель);
  •  кнопка (класса JButton) "Вывод соревнований" (южная панель);
  •  панель редактирования (класса JEditorPane) для содержимого MIME-типа "text/html" (центральная панель).

После выбор имени команды (значение атрибута name в одном из элементов team в элементе team-list) нажатия кнопки "Вывод соревнований" в панели редактирования выводятся характеристики соревнований, в которых участвует заданная команда (дата и время проведения, команды-участники и место проведения соревнования)  с соответствующими пояснительными надписями, выполненными жирным шрифтом.

5. Содержание отчета

В отчете должен быть представлен текст исходного документа XML, текст программы вывода документа XML на языке Java (без сгенерированных предложений)  и скриншот примера вывода программы.            

6. Вопросы для самоконтроля

Какие методы анализа документа XML определены в классе DocumentBuilder языка Java?

Какие методы получения объекта Document определены в классе DocumentBuilder языка Java?

Как получить экземпляр класса и создать новый экземпляр DOM-анализатора с использованием методов класса DocumentBuilderFactory в языке Java?

Какие конкретные реализации методов получения и установки значений параметров конфигурации DOM-анализатора определены в классе DocumentBuilderFactory языка Java?

Каково назначение интерфейса DOMImplementation в языке Java? Какие методы определены в этом интерфейсе, и каково их назначение?

Каково назначение интерфейса NodeList в языке Java? Какие методы определены в этом интерфейсе, и каково их назначение?

Каково назначение интерфейса Node в языке Java? Какие типы узлов определены в этом интерфейсе?

Какие методы определены в интерфейсе Node языка Java для получения и изменения параметров узла?

Какие методы определены в интерфейсе Node языка Java для получения компонент имени узла и проверки атрибутов?

Какие методы определены в интерфейсе Node языка Java для проверки и получения дочерних узлов, а также узла документа?

Какие методы определены в интерфейсе Node языка Java для изменения дочерних узлов, а также клонирования узлов?

Каково назначение интерфейса Document в языке Java? Какие методы получения характеристик документа определены в этом интерфейсе, и каково их назначение?

Какие методы изменения структуры и содержимого дерева объектов документа определены в интерфейсе Document языка Java, и каково их назначение?

Каково назначение интерфейса DocumentFragment в языке Java? Какие методы определены в этом интерфейсе? Как можно создать новый фрагмент документа?

Каково назначение интерфейса Element в языке Java? Какие методы получения имени узла и наборов узлов определены в этом интерфейсе?

Какие методы для проверки, получения и изменения атрибутов определены в интерфейсе Element языка Java?

Каково назначение интерфейса Attr в языке Java? Какие методы определены в этом интерфейсе, и каково их назначение?

Каково назначение интерфейса CharacterData в языке Java? Какие методы определены в этом интерфейсе, и каково их назначение?

Каково назначение интерфейса CharacterData в языке Java? Какие методы получения длины и доступа к данным определены в этом интерфейсе?

Какие методы изменения данных определены в интерфейсе CharacterData, и каково назначение этих методов?

Каково назначение интерфейсов Text, Comment  и CDATASection в языке Java? Какие методы определены в этих интерфейсах?

Каково назначение интерфейсов Source и Result в языке Java? Какие методы определены в этих интерфейсах?

Каково назначение класса Transformer в языке Java? Как выполняется преобразования с помощью метода этого класса?

Какие методы получения свойств определены в классе Transformer языка Java, и каково назначение этих методов?

Какие методы установки свойств определены в классе Transformer языка Java, и каково назначение этих методов?

Каково назначение класса TransformerFactory в языке Java? Как создаются объекты класса Transformer?

Какие методы получения и установки различных свойств определены в классе TransformerFactory языка Java, и каково назначение этих методов?

Каково назначение класса DOMSource в языке Java? Какие методы определены в этом классе, и каково назначение этих методов?

Каково назначение класса DOMResult в языке Java? Какие методы определены в этом классе, и каково назначение этих методов?

Каково назначение класса StreamSource в языке Java? Какие конструкторы определены в этом классе?

Какие методы и поля определены в классе StreamSource, и каково назначение этих методов и полей?

Каково назначение класса StreamResult в языке Java? Какие конструкторы определены в этом классе?

Какие методы и поля определены в классе StreamResult, и каково назначение этих методов и полей?   

айл: file:///web/1/5fan/public_html/www/files/2/5fan_ru_13954_ab4aa56d18824ec0934225c4872dc20d.doc   Создан: 2008-03-08T10:21:00Z Модифицирован: 2008-03-08T10:21:00Z     Автор:


 

А также другие работы, которые могут Вас заинтересовать

52025. Збірник прикладних задач «Математика навколо нас» 3.75 MB
  Анотація Ідея створення цього збірнику виникла з приводу того що розвиток математичних знань у розумово відсталих дітей має виключно практичну важливість оскільки людині в повсякденному житті постійно доводиться оперувати арифметичними виразами здійснювати рахунок і різні операції з числовими величинами. Скільки грошей він отримає пропрацювавши 20 днів Який розфасовки пральний порошок вигідніше купити господині якщо відомо що пакет вагою 2кг 400 г коштує р. Скільки...
52026. Вправи і задачі на засвоєння таблиць додавання і віднімання числа Порівняння виразу і числа 58.5 KB
  Діти в народі говорять: Добрий гість – дому радістьâ€. 2 слайд Математична розминка Інтерактивна вправа Мозковий штурм Як називається геометрична фігура у якої три кути Який день настає після суботи Скільки сторін у квадрата Скільки місяців триває зима Як називається лінія у якої є початок і кінець  Закінч речення: тиждень триває  Скільки паличок потрібно щоб викласти 2 квадрати Молодці 2. Математичний диктант Слайди 412....
52027. Таблица умножения и деления на 7 72 KB
  Гномики обожают число 7 и надеются что его полюбите и вы Что в вашей жизни связано с числом 7 Чего бывает в жизни только 7 Вы знаете что число 7 на Руси издревле считалось волшебным. Братья Гримм Умницы Первый гномик еще мал и любит играть. Гномик хочет познакомиться с вами. 21 : 3 = 7 21 : 7 = 3 назовите компоненты Третий гномик любит решать уравнения.
52028. Наш край у 1932-1933 роках. Історія Маньківщини 57.5 KB
  Хід уроку: Епіграф: Нагадай мені інший народ щоб він зазнав такої чорної недолі як народ український Учитель української мови і літератури Відкосили косами Жниварі з ЦК А ми хліба просимо Аж болить рука Встали під закопами Ух тверді лоби.Проценко Голодомор Учитель історії: Радянське керівництво взявши курс на модернізацію промислового потенціалу країни одразу зіткнулося з трьома проблемами: коштів сировини й робочих рук для розвитку індустрії. Учитель української мови та літератури: Перед вами картина...
52029. По следам бременских музыкантов. Числа от 11 до 20 173.5 KB
  И был у мельника осёл хороший осёл умный и сильный. Долго работал осёл на мельнице таскал на спине кули с мукой и вот наконец состарился.Чтение отрывка из сказки Видит хозяин: ослабел осёл не годится больше для работы и выгнал его из дому. Испугался осёл: “Куда я пойду куда денусь Стар я стал и слабâ€.
52030. Множення дробів. Піднесення дробу до степеня 239 KB
  Мета: домогтися засвоєння учнями правил множення раціонального дробу на цілий вираз на дріб а також правила піднесення раціонального дробу до натурального степеня та виконання сумісних дій піднесення дробу до степеня та множення раціональних дробів; формувати вміння відтворювати вивчені правила та застосовувати їх під час виконання завдань на множення раціональних дробів та піднесення дробу до степеня; вдосконалювати вміння виконувати скорочення раціональних дробів та знаходити ОДЗ дробового виразу; розвивати мислення...
52031. Короткі історичні відомості (від абака до нетбука) 1.09 MB
  Обладнання: мультимедійне обладнання: проектор екран або мультимедійна дошка; програмний комплекс презентація PowerPoint Як винайшли комп’ютер підручник робочі зошити інструкція з правил техніки безпеки. Робота за комп’ютером 8 хв. Саме в Києві був створений перший в Європі комп’ютер який умів швидше за всіх рахувати А чи завжди існували комп’ютери Якими вони були в давнину Про це ми дізнаємося на сьогоднішньому уроці. Вчитель презентує у електронному вигляді новий матеріал Як винайшли комп’ютер.
52032. Дидактические основы конструирования урока математики 247 KB
  Дидактические основы конструирования урока математики. Сущность современного урока математики и основные требования к нему типологии уроков. Взаимосвязь процессов конструирования и анализа урока математики. Непосредственная разработка урока математики.
52033. Счет в пределах 100. Решение составных задач 32.5 KB
  Задачи на смекалку: а как с помощью двух палочек образовать на столе квадрат положить их в угол стола; б сколько концов у палки У двух палок У двух с половиной 6 в какое число я задумала 5 ед. 1 сотня 138; г сколько получится: 78 84 212 94 187 97 Молодцы. А квадрат – это что Какие еще геометрические фигуры вы знаете Что такое квадрат Посчитайте сколько квадратов на рисунках 102 – 62 4 = 12 Чтобы снять мультфильм трудятся очень много людей: сценаристы операторы режиссеры.