![]() |
![]() |
![]() |
|
Есть ли функция или регулярка чтобы сделать строку годной для 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) просто ты не умеешь ее готовить - ты не ту кавычку выбрал, тебя интересует " (")
|
|||
18
Живой Ископаемый
21.06.11
✎
12:21
|
2(17) не с квотом проблема, а с больше-меньше
|
|||
19
Лефмихалыч
21.06.11
✎
12:23
|
(18) делофта - < >
|
|||
20
rs_trade
21.06.11
✎
12:25
|
(0)
select 'Сервисная Компания "Формула"/ТОВ/' as Field for xml raw |
|||
21
Живой Ископаемый
21.06.11
✎
12:25
|
да, вроде выходит только три - двойные кавычки, больше, меньше... ", >, <
даже апостроф можно |
|||
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
|
Ааааа.... туплю..... не про то подумал
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |