Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-06.doc
Скачиваний:
5
Добавлен:
12.05.2015
Размер:
287.23 Кб
Скачать

5.2.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.

Примеры использования методов интерфейса Element:

1. Вывести отправителей и тему для сообщений электронной почты, получателем которой является ivanov@mail.com:

// Получение списка элементов to в emailDoc

NodeList toMessageList =

emailDoc.getElementsByTagName("to");

// Получение количества элементов to

int toNumber = toMessageList.getLength();

// Получение списка элементов from в emailDoc

NodeList fromMessageList =

emailDoc.getElementsByTagName("from");

// Получение списка элементов subject в emailDoc

NodeList subjectToList =

emailDoc.getElementsByTagName("subject");

// Вывод заголовка

System.out.println("Вывод почты дляivanov@mail.com");

// Получение адресатов в цикле

for (int i=0; i < toNumber;i++) {

// Получение текущего элемента to

Element currentTo = (Element)toMessageList.item(i);

// Получение значения атрибута value

// в текущем элементе to

String currentToValue =

currentTo.getAttribute("value");

// Если получателем является ivanov@mail.com

if(currentToValue.equals("ivanov@mail.com")) {

// Получение текущего элемента from

Element currentFrom =

(Element)fromMessageList.item(i);

// Получение значения атрибута value

// в текущем элементе from

String currentFromValue =

currentFrom.getAttribute("value");

// Получение текущей темы

String currentSubjectValue =

subjectList.item(i).getFirstChild().getNodeValue();

// Вывод сведений о сообщении

System.out.println(" Сообщение " + (i+1) + ":\n" +

"Отправитель:" + currentFromValue + "\n" +

"Тема:" + currentSubjectValue);

}

}

Вывод этого фрагмента программы будет иметь следующий вид:

Вывод почты дляivanov@mail.com

Сообщение 3:

Отправитель:sidorov@mail.com

Тема: Отказ

Сообщение 5:

Отправитель:sidorov@mail.com

Тема: Ответ

2. Добавить в документе newEmailDocв элементыmessageатрибутid, а в элементыheader– атрибутыfrom,toиsubject:

// Получение списка элементов message в newEmailDoc

NodeList newMessageList =

newEmailDoc.getElementsByTagName("message");

// Установка атрибута id для элементов message в цикле

for (int i=0; i < newMessageList.getLength();i++) {

// Получение текущего элемента message

Element currentMsg = (Element)newMessageList.item(i);

// Создание узла аттрибута id

Attr idAttr = newEmailDoc.createAttribute("id");

// Задание значения для узла атрибута id

idAttr.setValue("msg" + (i+1));

// Установка атрибута id для

// текущего элемента message

currentMsg.setAttributeNode(idAttr);

}

// Массив отправителей писем

String [] fromArray =

{"petrov@mail.com","sidorov@mail.com"};

// Массив получателей писем

String [] toArray =

{"sidorov@mail.com","petrov@mail.com"};

// Массив тем писем

String [] subjectArray =

{"Напоминание","Благодарность"};

// Получение списка элементов header в newEmailDoc

NodeList newHeaderList =

newEmailDoc.getElementsByTagName("header");

// Установка атрибутов для элементов header в цикле

for (int i=0; i < newMessageList.getLength();i++) {

// Получение текущего элемента header

Element currentHeader =

(Element)newHeaderList.item(i);

// Установка значения атрибута from

// для текущего элемента header

currentHeader.setAttribute("from", fromArray[i]);

// Установка значения атрибута to

// для текущего элемента header

currentHeader.setAttribute("to", toArray[i]);

// Установка значения атрибута subject

// для текущего элемента header

currentHeader.setAttribute("subject",

subjectArray[i]);

}

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

<?xml version="1.1" encoding="UTF-8" standalone="no"?>

<new-email-folder>

<message id="msg1">

<!--Сообщение 1-->

<header from="petrov@mail.com"

subject="Напоминание" to="sidorov@mail.com"/>

<body>Завтра зачет по физике.</body>

</message>

<message id="msg2">

<!--Сообщение 2-->

<header from="sidorov@mail.com"

subject="Благодарность" to="petrov@mail.com"/>

<body>Спасибо, что напомнил</body>

</message>

</new-email-folder>

Соседние файлы в папке Лекции