powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / удалить конкретный узел из xml
5 сообщений из 5, страница 1 из 1
удалить конкретный узел из xml
    #35146237
Eric-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даже на этом форуме, результат поиска по слову removeChild оказался на 3 стр. Но всё про JavaScript или ещё что-то другое. Хоть и полезно, но до меня так и не дошло.

вот всё бьюсь не могу понять, как удалить определённый узел из xml документа.

У меня конкретно vb6 msXml60
в прочем это не очень важно.
Стандартный бэйсик и стандартный же парсер.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
'  примерно, впрочем не важно у меня грузиться из файла и с этим всё ок.
xmlDoc.load("<genres><dir_0><title id='1'>фантастика</title><title id='2'>детектив</title></dir_0></genres>"

' а теперь мне нужно удалить узел <title id='1'>
' но я не могу понять, как мне его выделить и какие данные подсунуть.

xmlDoc.removeChild xmlDoc.selectnotes("//genres/dir_1/title[@id=1]")

...
Рейтинг: 0 / 0
удалить конкретный узел из xml
    #35147333
Eric-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот тут есть примерчик, но vb.net
http://msdn.microsoft.com/library/rus/cpref/html/frlrfsystemxmlxmlnodeclassremovechildtopic.asp
и это совсем не то. Так, как vb6 ругаеться на используемые в примере типы данных.

о том как указать один определённый узел, мне тоже не ясно.
...
Рейтинг: 0 / 0
удалить конкретный узел из xml
    #35147404
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Включаем логику.
1)
removeChild - удалить потомка (одного).
selectNodes - выбрать ветки (несколько).
Так зачем же функции, принимающей одну ветвь, подсовывать коллекцию ветвей?

2)
xmlDoc - корень документа, ветки с title находятся в ветке dir_0, то есть не в корне.
Что получится при попытке удалить из ветки несуществующего потомка?

Правильный ответ:
Код: plaintext
1.
2.
For Each n In xmlDoc.selectNodes("//genres/dir_1/title[@id=1]")
    n.parentNode.RemoveChild n
Next
Еще более правильный:
Код: plaintext
1.
Set n = xmlDoc.selectSingleNode("//genres/dir_1/title[@id=1]") 'если id таки уникальный идентификатор
n.parentNode.RemoveChild n
...
Рейтинг: 0 / 0
удалить конкретный узел из xml
    #35147770
Eric-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕС!!! Мой респект и уважуха!

Код: plaintext
1.
2.
3.
Dim objNode As IXMLDOMNode
Set objNode = xmlDoc.selectSingleNode("//genres/dir_0/title[@id=1]")
objNode.parentNode.removeChild objNode

id действительно уникальный. Он собственно для того и делался.

А извинением за мою тупость будет, то что я совсем недавно влез в xml и dom. Раньше говорил, а - перебьюсь и без этого.
Ещё раз спасибо, пойду доделывать прогу.

И маленький вопросик: что это такое "parentNode"?
...
Рейтинг: 0 / 0
удалить конкретный узел из xml
    #35147813
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Eric-S
> И маленький вопросик: что это такое "parentNode"?
Вот как переводится такой и смысл имеет :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / удалить конкретный узел из xml
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]