![]() |
|
XML Удаление атрибута | ☑ | ||
---|---|---|---|---|
0
zerat
02.08.16
✎
08:43
|
Всем привет! Требуется удалить несколько атрибутов уже в выгруженном файле XML.
Написал через DOM, но удалить атрибуты как не пойму.... ОбъектXML = Новый ЧтениеXML; ОбъектXML.ОткрытьФайл(ФайлОбмена); ПостроительDOM = Новый ПостроительDOM; ДокументDOM = ПостроительDOM.Прочитать(ОбъектXML); ОбъектXML.Закрыть(); НужныйЭлемент = ДокументDOM.ПолучитьЭлементыПоИмени("КоммерческаяИнформация"); Если НужныйЭлемент.Количество()>0 Тогда НужныеАтрибуты = ДокументDOM.ПолучитьЭлементыПоИмени("КоммерческаяИнформация")[0].Атрибуты; Для сч=0 по НужныеАтрибуты.Количество()-1 Цикл Если ЗначениеЗаполнено(НужныеАтрибуты[сч].URIПространстваИмен) Тогда НужныеАтрибуты[сч].Значение = ""; КонецЕсли; КонецЦикла; ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ФайлОбмена); ЗаписьDOM = Новый ЗаписьDOM; ЗаписьDOM.Записать(ДокументDOM, ЗаписьXML); ЗаписьXML.Закрыть(); КонецЕсли; |
|||
1
zerat
02.08.16
✎
09:29
|
ап ап
|
|||
2
igork1966
02.08.16
✎
09:35
|
КоллекцияАтрибутовDOM (DOMAttributeMap)
Элементы коллекции: АтрибутDOM Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются атрибуты DOM. Возможно обращение к атрибуту DOM посредством оператора [...]. В качестве аргумента передается индекс (нумерация с 0). Методы: Количество (Count) ПолучитьИменованныйЭлемент (GetNamedItem) УдалитьИменованныйЭлемент (RemoveNamedItem) УстановитьИменованныйЭлемент (SetNamedItem) Элемент (Item) (с) СП |
|||
3
igork1966
02.08.16
✎
09:38
|
(2) Кстати, какая необходимость обходить коллекцию со счетчиком?
|
|||
4
zerat
02.08.16
✎
09:57
|
(2) что - то не находит он его по имени....
пишу так НужныеАтрибуты.УдалитьИменованныйЭлемент("xmlns"); |
|||
5
igork1966
02.08.16
✎
10:07
|
||||
6
zerat
02.08.16
✎
10:58
|
||||
7
igork1966
02.08.16
✎
11:00
|
xmlns:__default__
образовалось потому что ты его "удалил" xmlns не обычный атрибут, это пространство имен. Его не удалить. |
|||
8
igork1966
02.08.16
✎
11:02
|
||||
9
zerat
02.08.16
✎
11:06
|
(8) Текст = Новый ТекстовыйДокумент;
Это же капец....капец как долго будет если файл огромный, и пихать его в память.... |
|||
10
igork1966
02.08.16
✎
11:08
|
(9) Другой вариант, прочитать XML и создать новый без пространства имен будет не быстрее.
|
|||
11
igork1966
02.08.16
✎
11:11
|
(10) + или можно использовать ПреобразованиеXSL
ЗЫ. В любом случае ты его читать будешь... |
|||
12
zerat
02.08.16
✎
11:12
|
(11) Спасибо, сейчас попробую костыли)))
|
|||
13
Serginio1
02.08.16
✎
14:17
|
ЗаписьXML = Новый ЗаписьXML;
Пока ЧтениеXML.Прочитать() Цикл // Проверй если не нужный узел то записывай полностью ЗаписьXML.ЗаписатьТекущий(ЧтениеXML); // Изменяй и записывай вруную КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |