![]() |
Как удалить элементы XML
Здравствуйте уважаемые.
Задача в общем то простая, но почему то не могу осилить. Есть XML состоящий из корневого элемента и списка вложенных. Задача проверить все вложенные элементы и те у которых отсутствует определенный атрибут удалить из XML. в цикле прохожу по элементам delete xml.*[i]; где xml сам документ, i индекс удаляемого элемента который выбирается в обратном порядке чтобы не было глюков после удаления. Строка исполняется но при этом в самом xml как были все элементы так и остаются. Я так понимаю что xml.* возвращает XMLList и удаление уже идет из его списка, а как мне удалить из самого xml?:wacko: |
Код AS3:
|
Красивая конструкция)
Код AS3:
attribute("valid").length() что проверяет? Я так понимаю существование атрибута, hasOwnProperty("@valid") можно использовать, я к нему как то больше привык)? или истина или заменяем текущий элемент на пустой текстовый. xml.normalize() получается все лишние текстовые узлы убивает после замены. Правильно понял? |
hasOwnProperty будет аналогично работать в данном случае, наверняка даже быстрее.
attribute("attributeName") возвращает всегда XMLList, даже если атрибутов с соответстующим именем не было, т.е. нужно проверить не равняется ли длина нулю. На самом деле вместо true может быть что угодно т.как мы не используем результат фильтра в любом случае, мы просто не можем использовать if() внутри фильтра. Если условие не выполняется, то мы заменим текущий элемент "" (т.е. фактически удалим), но не совсем, т.как в таком случае будет создан пустой элемент типа текст, но если мы потом normalize()уем етот XML, то пустые текстовые элементы будут удалены. |
Всё уж лучше:
Код AS3:
Код AS3:
|
Красиво)
Цитата:
Цитата:
Извиняюсь что украл время, и премного благодарен за опыт. Научился еще немножко работать с xml |
А если слегка усложнить задачу? Нужно удалять элементы попарно при определенном содержимом свойства, если такое же содержимое такого же свойства имеется в следующем за ним элементе.
Добавлено через 1 час 2 минуты У меня получилось так: Код AS3:
|
| Часовой пояс GMT +4, время: 06:44. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.