Вход

Просмотр полной версии : XML - удаление узлов по имени


Роман Вадимович
06.12.2007, 15:36
Добрый день.
Хочу задать простой вопрос.
У меня есть такой XML:

<objects>
<object name="obj1">Это первый объект</object>
<object name="obj2">Это второй объект</object>
<object name="obj3">Это третий объект</object>
</objects>


Вопрос! Я хочу удалить второй объект. Возможно ли удалить его сославшись на его имя?

Примечание. Я знаю только способ перебора объектов в цикле.
Перебирая элементы я могу сравнивать атрибут name с тем, который мне нужен. И если это он - удалить при помощи функции deleteNode(), но как мне кажется это тупо.

amesqit
06.12.2007, 16:16
Простите, а чем Вам не нравится перебор? "name", это лишь атрибут, ничего тупого в переборе тут нет.
P.S.: для удаления узла используется функция removeNode()

Роман Вадимович
06.12.2007, 16:23
Да, прошу прощения я ошибся в названии фунции removeNode().
К примеру объектов имеется 1000.
Получается, что мне нужно перебрать всю тысячу, чтобы удалить нужный элемент.
Найти узел по индексу я могу:
xml_objects.firstChild.childNodes[номер узла].

amesqit
06.12.2007, 16:36
Вы боитесь, что перебор тысячи узлов займет у вас длительное время? В любом случае тут без перебора не обойтись, а если вы уверены, что не может быть 2-х атрибутов с одинаковыми полями "name", то ничто не сможет вам помешать при обнаружении узла прервать цикл.

Fernando Costa
06.12.2007, 17:11
Роман Вадимович, а может стоит глянуть на АС3, там класс XML могет делать такие весчи

iNils
06.12.2007, 18:52
Если имя всегда уникальное, то может стоит называть не name, а id и тогда через idMap получать доступ по id?

Роман Вадимович
07.12.2007, 00:08
Если имя всегда уникальное, то может стоит называть не name, а id и тогда через idMap получать доступ по id?
Супер. То что нужно. Спасибо :)