Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Решено | XML. DOM. Поиск дочерних элементов. (http://forum.oszone.net/showthread.php?t=64969)

penykov 27-04-2006 10:29 432099

XML. DOM. Поиск дочерних элементов.
 
Язык Java (но несущественно).
Есть XML-документ:

<member_list>
<user>
<name>Vasia</name>
<age>20></age>
</user>
<user>
<name>Petia</name>
<age>35></age>
</user>
<user>
<name>Kolia</name>
<age>22></age>
</user>
<user>
<name>Masha</name>
</user>
<admin>
<name>Ivan</name>
<age>36></age>
</admin>
</member_list>


Необходимо средствами DOM получить значения тэгов <name>. Только тех, которые являются потомками для тэгов <user>.
Мои варианты:
1.
getElementsByTageName - ищем всех <user>. Затем перебираем все дочерние тэги, сравнивая название с требуемым.
Хочется что-то вроде getElementsByTagName, но с поиском в дочерних элементах Node.
2. getElementsByTageName - ищем всех <name>. Потом проверяем кто является родителем (не <user> ли?).
Недостаток: если захочется искать ещё и <age>, то трудно сопоставить <age> <name>'у, т.к. тэги могут отсутствовать.

Помогите с грамотной реализацией варианта 1 или может быть есть другие более правильные решения? )

penykov 27-04-2006 14:15 432193

Я немного приблизился к разгадке. Хочу всю Node скопировать в новый документ.
Дайте пожалуйста пример с применением функции importNode.

Vlad Drakula 27-04-2006 15:22 432213

penykov
а не прощели использовать XPath ? и не париться с домом?

penykov 27-04-2006 15:46 432221

Обязательно надо было с домом :)

Вопрос решён примерно так (Java):

На входе Node _node;

document = builder.newDocument();
Node importnode = document.importNode(_node, true);
document.appendChild(importnode);



Время: 12:24.

Время: 12:24.
© OSzone.net 2001-