|
v7: CDATA в XML (MSXML2.DOMDocument) | ☑ | ||
---|---|---|---|---|
0
pavlo
21.08.12
✎
08:51
|
Кто нить знает как запихнуть через MSXML2.DOMDocument поле типа CDATA?
Сейчас обычные теги создаются просто, код ниже, но cdata так не создается и не знаю как сделать :( Процедура ЗаписьХМЛ() xml=СоздатьОбъект("MSXML2.DOMDocument"); Классификатор = xml.createElement("Классификатор"); Классификатор.text = "тут текстовое значение элемента" xml.appendChild(Классификатор); КонецПроцедуры а вот куда и как применить xml.createCDATASection() не понятно, потому как текст многострочный и с разными символами типа &, поэтому чтобы не менять каждый символ и оставить все форматирование хотел применить вот этот тип данных, но увы не получается. Кто нить сталкивался, может помочь? |
|||
1
andrewks
21.08.12
✎
08:59
|
|
|||
2
pavlo
21.08.12
✎
09:36
|
спасибо, но в моем варианте орет, что недопустимые данные для узла типа CDATA :(
у меня что то типа: Процедура ДобавитьЗначениеВПодГруппу(Тег,ИмяПодГруппы,зн="") //тег - в какую ветку добавляем подгруппу //ИмяПодГруппы - какое имя будет у подгруппы //зн - значение подгруппы Перем имя,данные; имя = xml.createElement(СокрЛП(ИмяПодГруппы)); Если ПустоеЗначение(зн)=0 Тогда Если Лев(СокрЛП(зн),8)="<![CDATA" Тогда данные = xml.createCDATASection(зн); Иначе //имя.text = зн; данные = xml.createTextNode(зн); КонецЕсли; КонецЕсли; Тег.appendChild(данные); КонецПроцедуры // ДобавитьЗначениеВПодГруппу |
|||
3
andrewks
21.08.12
✎
09:38
|
(2) код в (1) абсолютно рабочий. изучай, сравнивай, осмысливай разницу
|
|||
4
pavlo
21.08.12
✎
09:39
|
да я его пример уже изучал, аналог тут http://www.script-coding.com/XMLDOMscripts.html, толку то что то не могу взять в толк :( что ей нужно и что не так.
|
|||
5
pavlo
21.08.12
✎
09:42
|
в моем примере связи не видно и это понятно, но не понятно как в итоге должен пазл сложится ;)
|
|||
6
pavlo
21.08.12
✎
09:45
|
ругается как то так:
данные = xml.createCDATASection(зн); {C:\тест.ERT(70)}: msxml3.dll: Недопустимые данные для узла типа ''CDATA''. |
|||
7
pavlo
21.08.12
✎
09:46
|
а в "зн" просто текст формата "<![CDATA[Пример разного рода текста]]>"
|
|||
8
andrewks
21.08.12
✎
09:52
|
да е-моё...
вот тебе _полный рабочий_ код изучай, смотри
|
|||
9
Новенький_2009
21.08.12
✎
09:55
|
А кодировка содержимого то в CDATA какая?
|
|||
10
pavlo
21.08.12
✎
09:57
|
(8) ладно, буду дальше думать как победить, спс.
(9) xml.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8"""); |
|||
11
Новенький_2009
21.08.12
✎
10:00
|
(10) а что должно быть?
|
|||
12
pavlo
21.08.12
✎
10:01
|
(11) оно и должно быть, суть вопроса не в кодировке ;)
|
|||
13
Новенький_2009
21.08.12
✎
10:07
|
(12) как вдоволь на#ебешься, апни тему - подскажу уж совсем открытым текстом :)
|
|||
14
Надсмотрщик
21.08.12
✎
10:10
|
(7) Попробуй передать
зн = "Пример разного рода текста"; |
|||
15
pavlo
21.08.12
✎
10:17
|
(14) Типы не совпадают - пишет.
|
|||
16
Надсмотрщик
21.08.12
✎
10:20
|
(15) Методом "проб и ошибок"
зн = "[Пример разного рода текста]" зн = "CDATA[Пример разного рода текста]" |
|||
17
pavlo
21.08.12
✎
10:29
|
нет, ну запихнуть в итоге получается, но не так как нужно.
нужно чтобы структура была: <Классификаторы> <!-- Справочник цветов товара --> <Классификатор> <Ид>тут код какой нить</Ид> <Имя> <![CDATA[Тут что угодно]]> </Имя> </Классификатор> </Классификаторы> как то так нужно. |
|||
18
Надсмотрщик
21.08.12
✎
10:40
|
А как получается?
|
|||
19
andrewks
21.08.12
✎
10:49
|
ну вы, етить, измудряетесь, я не могу над вами. _готовый_ код не смочь воткнуть - это эпик фэйл
|
|||
20
pavlo
21.08.12
✎
10:54
|
Ну на выходе получилось теперь такое и вроде пашет, в связи с чем больше спасибо ;)
Процедура ДобавитьЗначениеВПодГруппу(Тег,ИмяПодГруппы,зн="",CDATA=0) //тег - в какую ветку добавляем подгруппу //ИмяПодГруппы - какое имя/ветка будет у подгруппы //зн - значение подгруппы //CDATA - тип данных 0=текст,1=произвольные данные Перем имя,данные; имя = xml.createElement(СокрЛП(ИмяПодГруппы)); // имя.setAttribute("Атрибут_СодержимоеФайла_1","Здесь содержимое Атрибут_СодержимоеФайла_1"); Если (CDATA=1) и (ПустоеЗначение(зн)=0) Тогда данные = xml.createCDATASection(зн); Иначе данные = xml.createTextNode(зн); КонецЕсли; Тег.appendChild(Имя); Имя.appendChild(данные); КонецПроцедуры // ДобавитьЗначениеВПодГруппу |
|||
21
pavlo
21.08.12
✎
10:56
|
(19) уважаемый я рад за вас, что вы все понимаете и спасибо за пример, но если не хочется объяснять, зачем слюной исходить?
(18) спасибо, вроде идет, проверю еще на формат, правильный в смысле формата XML и можно радоваться будет. |
|||
22
Надсмотрщик
21.08.12
✎
10:58
|
(21) Пиво на мыло сбросишь :-)
|
|||
23
pavlo
21.08.12
✎
11:00
|
(22) ;) ушло
|
|||
24
Надсмотрщик
21.08.12
✎
11:01
|
(23) Жаль я сейчас "за рулем", но вечером за твое здоровье. ;-)))
|
|||
25
pavlo
21.08.12
✎
11:02
|
(24) за ваше ;)
|
|||
26
pavlo
21.08.12
✎
11:27
|
(8) большое спасибо вам тоже за примеры и оперативность
|
|||
27
andrewks
21.08.12
✎
11:27
|
(21) 1. я слюной не исходил, и объяснять там нечего - код элементарный. а выразить своё мнение по поводу происходящего я имею полное право
|
|||
28
andrewks
21.08.12
✎
11:28
|
(26) пожалуйста :) обращайся
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |