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