ПостроительDOM при чтении преобразовывает CDATA в Текст #742222


#0 by vadymdymdym
Привет всем. Встретился с проблемой. При чтении объекта ЧтениеXML при помощи объекта ПостроительDOM узел типа СекцияCDATA преобразовываются в узел типа Текст. Можно ли этого избежать? В самом же объекте ЧтениеXML - да можно. При его создании указываются т.н. параметры XML, в которых один из параметров - это СекцииCDATAКакТекст. Если значение этого параметра равно Ложь - данные секции читаются как нужно. Что делать с объектом ПостроительDOM?
#1 by DrShad
А чем текстовые узлы не подходят?
#2 by vadymdymdym
Тем, что мне необходимо считать данные XML, затем изменить то, что мне нужно, а затем снова их сохранить. А при сохранении перетирает все эти секции
#3 by Лефмихалыч
чует моя чуйка, что вариантов нет. Доказать не могу
#4 by ДенисЧ
Придётся смириться. Если не умеет объект - значит, не используй его.
#5 by DrShad
Виндовым парсером читай, он точно умеет
#6 by Zhuravlik
DOM можно превратить в дерево значений (затратно), затем обойти файл еще раз, используя чтение XML, и дополнить дерево нужной информацией.
#7 by Zhuravlik
+ кстати, если запись реализуется с XDTO - очень удобно пользоваться таким деревом, как источником данных.
#8 by vadymdymdym
А вот это идея. Наверное придется. Просто думал, может все-таки ДокументDOM может)) Тоже вариант, но не хочется. Ибо, слишком громоздко. С таки же успехом можно и при помощи ЧтенияXML сделать обход и построить дерево Не, с XDTO там никак)) Всем спасибо за варианты.
#9 by Лефмихалыч
проще читать последовательно и последовательно же записывать, подменяя на лету то, что надо заменить. Накладных затрат меньши на пару порядков
#10 by vadymdymdym
Да тоже громоздко. Особенно когда документ содержит разные типы узлов с разными уровнями вложенности. Помог DrShad. Виндовый парсер рулит
#11 by DrShad
ну так в виндовом тот же DOM только импортный
#12 by vadymdymdym
Ну... по сути - да))
#13 by Garykom
нафехуа вам DOM? юзайте SAX и будет Вам счастье...
#14 by DrShad
Dom тяжелее, только хардкор
#15 by vadymdymdym
Ну... я конечно не силен в этом, но ...  насколько я понимаю SAX - это последовательный доступ к документу. Т.е. по сути - это те же объекты ЧтениеXML и ЗаписьXML в 1С-ке, что не приемлимо в силу громоздкости. Ежели поделитесь примером использования SAX в 1С-ке - буду Вам очень признателен))
#16 by Garykom
#17 by vadymdymdym
Спасибо, кэп))). Это мы проходили)). Я думал, я увижу что-то вроде решения моей задачи)). А в моем случае что предлагаете?)) Воспользоваться советом Лефмихалыча с последовательным чтением и записью? Да нет уж. Много букв в коде будет. Не осилю))). А если серьезно - очень много геморроя будет. Ради одной замены в файле будет пройден цикл обработки чтения, распознавания узлов, создания таких же узлов... Зачем если все решается двумя строками selectNodes и element.text="Мое значение"))
#18 by Fragster
у меня наоборот - превращает большие (больше нескольких сотни примерно символов) строки в cdata. Наверное какие-нибудь опции записи могут на это повлиять. Но чисто визуально на другой стороне это никак не влияет на то, как там этот XML потом разбирается.
#19 by vadymdymdym
А вот об этом я не подумал, кстати. Действительно, если парсер здесь воспринимает эти узлы одинаково, то и на той стороне сервак может поступить также. Попробую, отпишусь))
#20 by Garykom
задачка: файлик xml распакованный скажем 500 мегабайт, сколько нужно оперативки на компе чтобы сделать DOM ?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С