Имя: Пароль:
1C
 
Есть ли функция или регулярка чтобы сделать строку годной для XML?
0 Живой Ископаемый
 
21.06.11
11:55
э... Например
CorrSName="Сервисная Компания "Формула"/ТОВ/"
должно получиться
CorrSName="Сервисная Компания "Формула"/ТОВ/"

я не гордый, могу воспользоваться Заменить(Строка,""",""")
но вдруг это не единственный символ?
1 Fragster
 
гуру
21.06.11
11:55
хмлСтрока?
2 vmv
 
21.06.11
11:56
это слишком сложно для 1С)
3 Живой Ископаемый
 
21.06.11
11:57
2(1)если бы...
4 Живой Ископаемый
 
21.06.11
11:59
5 Лефмихалыч
 
21.06.11
12:01
(0) СтрЗаменить() онле
6 Живой Ископаемый
 
21.06.11
12:05
собственно почему это проблема:
http://screencast.com/t/zf7eGmsOcJ
===

(5) мм... а есть список символов-исключений, или опытным путем и пока ограничиться кавычкой? знак больше-меньше поди тоже...
7 Живой Ископаемый
 
21.06.11
12:05
8 Fragster
 
гуру
21.06.11
12:06
сдается мне, что если через ДокументDOM все делать - все будет нормально (по крайней мере, если в PHP формировать документ DOM, то все замены служебных символов сами делаются)
9 Рэйв
 
21.06.11
12:08
может так?

Глобальный контекст
НайтиНедопустимыеСимволыXML (FindDisallowedXMLCharacters)
Синтаксис:
НайтиНедопустимыеСимволыXML(<Строка символов>, <Позиция начала>)
Параметры:
<Строка символов> (обязательный)
Тип: Строка. Строка, в которой необходимо проверить символы.
<Позиция начала> (необязательный)
Тип: Число. Позиция символа в строке, начиная с которого будет производиться проверка.
Значение по умолчанию: 1
Возвращаемое значение:
Тип: Число. В случае обнаружения некорректного символа будет возвращена его позиция в строке, если же подобного символа не найдено – возвращаемое значение 0.
Описание:
Проверяет символы указанной строки на соответствие рекомендации XML 1.0. Проверка строки начинается с символа в позиции, указанной в параметре < Позиция начала>.
10 Лефмихалыч
 
21.06.11
12:08
11 Живой Ископаемый
 
21.06.11
12:11
(9)
http://screencast.com/t/9SKLtexGiF8g
а должно быть так:

http://screencast.com/t/QyLKQFGO
===
2(10)Сенкс
12 Живой Ископаемый
 
21.06.11
12:11
13 Живой Ископаемый
 
21.06.11
12:17
2(10) наверное это ложная статья.. :)
http://screencast.com/t/QEfaKWvGM85
или это спецсимволы не для ХМЛ
14 Fragster
 
гуру
21.06.11
12:18
(13) таки попробуй формировать через документDOM (безо всяких преобразований)
15 Живой Ископаемый
 
21.06.11
12:19
а... нашел
wiki:XML#.D0.A1.D0.BF.D0.B5.D1.86.D1.81.D0.B8.D0.BC.D0.B2.D0.BE.D0.BB.D1.8B

2(14) попробую чуть позже, сейчас надо хоть как-то...
16 Живой Ископаемый
 
21.06.11
12:20
17 Лефмихалыч
 
21.06.11
12:20
(13) просто ты не умеешь ее готовить - ты не ту кавычку выбрал, тебя интересует " (&quot;)
18 Живой Ископаемый
 
21.06.11
12:21
2(17) не с квотом проблема, а с больше-меньше
19 Лефмихалыч
 
21.06.11
12:23
(18) делофта - &lt; &gt;
20 rs_trade
 
21.06.11
12:25
(0)

select 'Сервисная Компания "Формула"/ТОВ/' as Field for xml raw
21 Живой Ископаемый
 
21.06.11
12:25
да, вроде выходит только три - двойные кавычки, больше, меньше... &quot;, &gt;, &lt;
даже апостроф можно
22 KAO111
 
21.06.11
12:34
Может можно использовать CDATA.

Тогда ничего конвертировать не придется.
23 Живой Ископаемый
 
21.06.11
12:35
я даже не знаю что это такое.
24 KAO111
 
21.06.11
12:36
25 Лефмихалыч
 
21.06.11
12:38
(22) а смысл тогда XML вообще использовать? сразу ух в плоский текстовик и вся недолга...
26 Живой Ископаемый
 
21.06.11
12:39
(24) а... не знаю как отнесется к этому другая программа, для которой этот ХМЛ нужен...
э... и кроме того что-то пока не понял что мне написать, чтобы избежать СтрЗаменить()
27 KAO111
 
21.06.11
12:43
(25) какая разница - передадим мы в значение узла строку правильную или секцию CDATA, это не то же самое, что весь файл

(26) разобрать любая программа точно разберет - это же базовые возможности XML, а вот чтобы записать в 1С - надо извращаться.
28 rs_trade
 
21.06.11
12:45
(26) скуль может форматнуть строку. пример в (20)
29 Живой Ископаемый
 
21.06.11
12:46
2(28) ну надо же...
2(27) пишу текстовый файл, как должна выглядеть секция, чтобы было как http://screencast.com/t/QyLKQFGO
30 Лефмихалыч
 
21.06.11
12:47
(29) кажись ни как - CDATA в атрибут не вставить, если я правильно ошибаюсь
31 KAO111
 
21.06.11
12:48
(29) если XML формируется просто как текстовый файл - то просто

СтрокаXML = "<![CDATA["+Строка+"]]>";
32 KAO111
 
21.06.11
12:50
(30) а да, логично. с атрибутом не уверен, что можно
33 Живой Ископаемый
 
21.06.11
12:52
2(31) я где-то слажал?
http://screencast.com/t/1C20i2vGQ
34 Живой Ископаемый
 
21.06.11
12:53
короче, пока заменяю три символа, а там перепишу вообще по-нормальному.
35 Fragster
 
гуру
21.06.11
12:53
уже час прошел. давно бы через документ дом сделал бы
36 Лефмихалыч
 
21.06.11
12:55
(35) как знать. Я как-то пробовал, но "то ли голова моя не туда вставлена, то ли слишком много врал и груза не снесть" - больше часа провозюкался и так ни хрена и не добился...
37 Живой Ископаемый
 
21.06.11
12:55
2(35) я уже старенький, у меня ментальная инертность поболе твоей будет.
38 KAO111
 
21.06.11
13:02
оно конечно можно и так

   ЗаписьXML = Новый ЗаписьXML;
   ЗаписьXML.УстановитьСтроку();
   ЗаписьXML.ЗаписатьНачалоЭлемента("ROW");
   ЗаписьXML.ЗаписатьАтрибут("CorrSName",Строка) ;
   ЗаписьXML.ЗаписатьКонецЭлемента();

   СтрXML = ЗаписьXML.Закрыть();
   Сообщить(СтрXML);
39 Живой Ископаемый
 
21.06.11
13:13
2(38) ооо! супер
40 Живой Ископаемый
 
21.06.11
13:14
:)) короче писать ХМЛ через текст - противоестественно...
41 Fragster
 
гуру
21.06.11
13:17
у Документа DOM преимущество - он с произвольным доступом на чтение/запись, а так - да, у него вывод в ЗаписьXML и чтение из Чтения XML, да.
42 Fragster
 
гуру
21.06.11
13:18
что-то типа
   Документ = Новый ДокументDOM("","root");
   Корневой = Документ.ЭлементДокумента;
   ТекстовыйУзел = Документ.СоздатьТекстовыйУзел("КриваяСтрока """"><><<'''");
   Корневой.ДобавитьДочерний(ТекстовыйУзел);
   Сообщить(Документ.ТекстовоеСодержимое);
   Запись = Новый ЗаписьDOM;
   XML = Новый ЗаписьXML;
   XML.УстановитьСтроку();
   Запись.Записать(Документ, XML);
   Сообщить(XML.Закрыть());
43 Seducer
 
21.06.11
13:27
Хм.... а у меня сама 1С преобразовывает. ничего такого даже не писал
44 Seducer
 
21.06.11
13:28
Ааааа.... туплю..... не про то подумал
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.