
- •Лекция 4-06
- •Тема 5.2. Обработка документов xml с использованием Java
- •Тема 5.2. Обработка документов xml с использованием Java
- •5.2.1. Обработка документов xml
- •5.2.2. СинтаксическиеSax-анализаторыXml
- •5.2.3. РеализацияDomxmLв языкеJava
- •5.2.3.1. Доступ к документу xml
- •5.2.3.1.1. Класс DocumentBuilder
- •5.2.3.1.2. КлассDocumentBuilderFactory
- •5.2.3.2. Интерфейсы dom xml в языкеJava
- •5.2.3.2.1. ИнтерфейсDomImplementation
- •5.2.3.2.2. ИнтерфейсNodeList
- •5.2.3.2.3. ИнтерфейсNamedNodeMap
- •5.2.3.2.4. ИнтерфейсNode
- •5.2.3.2.5. ИнтерфейсыDocument,DocumentFragmentиDocumentType
- •Тема 1: 'Поздравление'
- •5.2.3.2.6. ИнтерфейсElement
- •5.2.3.2.7. ИнтерфейсAttr
- •5.2.3.2.8. Интерфейсы CharacterData, Text, Comment и cdataSection
- •5.2.3.2.9. ИнтерфейсыEntity,EntityReference,NotationиProcessingInstruction
- •5.2.3.2.10. ИсключениеDomException
- •5.2.3.3. Средства выполнения преобразований документовXmLв языкеJava
- •5.2.3.3.1. Общие средства выполнения преобразований документовXml
- •5.2.3.3.2. Средства преобразования дляDom-анализатора
- •5.2.3.3.3. Средства преобразования для потоков ввода-вывода
5.2.3.2. Интерфейсы dom xml в языкеJava
Методы, реализующие операции над документом и его элементами, определены в интерфейсах пакета org.w3c.domкак вJavaJ2SE, так и вJ2EE.
Интерфейсы пакета образуют иерархическую структуру, представленную на рис. 5.2.1.
Рис. 5.2.1. Иерархическая структура интерфейсов пакета org.w3c.domдля DOM XML
Рассмотрим компоненты пакета org.w3c.dom.
5.2.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.
5.2.3.2.2. ИнтерфейсNodeList
Интерфейс NodeListзадает абстрактное представление упорядоченной коллекции узлов. Метод
public int getLength()
возвращает длину коллекции, а метод
public Node item(int index)
возвращает элемент коллекции как узел типа Node(индексация элементов в коллекции начинается с0).
5.2.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.