Честно говоря, не знаю, кому может пригодиться ...
Мне надо было генерировать (для заказчика) и читать (от заказчика) XML в кодовой таблице Window-1251.
1. Опишем русскую кодировку в CPXML.Inc
Код: Выделить всё
XMLEnc EQUATE(STRING)
XMLEnc:UTF8 EQUATE('UTF-8')
XMLEnc:UTF16 EQUATE('UTF-16')
XMLEnc:ISO88591 EQUATE('ISO-8859-1')
XMLEnc:WIN1251 EQUATE('WINDOWS-1251')
DOMToXMLFile procedure(*Document doc, string path, <*CSTRING newLine>, UNSIGNED Format = Format:AS_IS)
Код: Выделить всё
ret BYTE
CODE
IF omitted(3)
!ret=DOMToXMLFile(doc,path,,Format,XMLEnc:UTF8)
ret=DOMToXMLFile(doc,path,,Format,XMLEnc:WIN1251)
ELSE
!ret=DOMToXMLFile(doc,path,newLine,Format,XMLEnc:UTF8)
ret=DOMToXMLFile(doc,path,newLine,Format,XMLEnc:WIN1251)
END
RETURN ret
4. Вопрос с документами в UTF-8 не рассматривается
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
(Добавление)
Когда-то мне пришлось более плотнее исследовать C6 XML Support. Сделал точно такие же изменения как Вы.
Когда получил этот результат - обрадовался. Но попробовал, используя их классы создать свой XML, и очень разочаровался. Оказывается, классы напрочь отказываются работать с русскими тегами.3. После чего получим XML-файл (например, в Example\XMLParse) в кодировке Windows-1251, вполне отображаемый браузером.
Может проблема в кодовой странице, о которой писал Сергей Артюшенков.Но встаёт другая проблема - эти файлы не читаются кларионовским парсером (Шаблон 'View XML File' просто падает при загрузке). Ну >что ж, тем хуже для парсера.
Я не понял, тогда в этом случае все O'K, что ли?Возьмём шестнадцатеричный редактор, найдём в модуле C60cpxml.dll текст 'ISO-8859-1', заменим на 'WINDOWS-1251' и добавим в конец '<0>' .
С уважением, Семен Попов
Пофиксил. Теперь работаютКогда получил этот результат - обрадовался. Но попробовал, используя их классы создать свой XML, и очень разочаровался. Оказывается, классы напрочь отказываются работать с русскими тегами.
А за это отвечает процедура CheckXMLName из CpXML.clw . Можно поставить в первую строку Return(0) - и будут приниматься любые тегиКогда получил этот результат - обрадовался. Но попробовал, используя их классы создать свой XML, и очень разочаровался. Оказывается, классы напрочь отказываются работать с русскими тегами.
---------------------------------------
C уважением,
Юрий Философов
Спасибо, попробую.
С уважением, Семен Попов
Это естественно. Но сгенерированные файлы не читались через Support. Потратил время, чтобы понять причину и добить, как заставить их читаться. О чём и рассказалКогда-то мне пришлось более плотнее исследовать C6 XML Support. Сделал точно такие же изменения как Вы.
По крайней мере, файлы, созданные обычным текстовым редактором или сформированные программой (в том числе без использования интерфейса) читаются, только и всего. Просто похоже, что используемая библиотека в принципе не поддерживает кодировок, отличных от буржуинских, а это самый простой путь заставить это делать...Я не понял, тогда в этом случае все O'K, что ли?
... исправленные модули для CW6.1 на http://www.tacis-dipol.ru/fil/XML1251.zip
---------------------------------------
C уважением,
Юрий Философов
Написал: ClaList(2)