ЧтениеУзловDOM.КодировкаXML

Свойства · XMLEncoding

Тип: Строка. Кодировка исходного документа XML. Содержит значение атрибута encoding объявления XML. Если атрибут не указан или объявление не прочитано (отсутствует), то будет возвращена кодировка UTF8.

Полное описание, параметры и ограничения

ЧтениеУзловDOM.КодировкаXML (DOMNodeReader.XMLEncoding)

ЧтениеУзловDOM (DOMNodeReader)

КодировкаXML (XMLEncoding)

Доступен, начиная с версии 8.1.

Использование:
Только чтение.
Описание:
Тип: Строка.
Кодировка исходного документа XML.
Содержит значение атрибута encoding объявления XML.
Если атрибут не указан или объявление не прочитано (отсутствует), то будет возвращена кодировка UTF8.
Доступность:

Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Поддерживаемые коды кодировок (с учетом правил http://www.w3.org/TR/2004/REC-xml-20040204/#NT-EncName):
UTF-8

UTF-16

UTF-16BE

UTF-16LE

ISO-8859-1

US-ASCII

gb18030

iso-8859-2

iso-8859-3

iso-8859-4

iso-8859-5

iso-8859-6

iso-8859-7

iso-8859-8

iso-8859-9

iso-8859-13

iso-8859-15

Shift_JIS

EUC-JP

Big5

Big5-HKSCS

GBK

GB2312

GB_2312-80

EUC-KR

KSC_5601

windows-949

windows-874

cp866

KOI8-R

KOI8-U

windows-1250

windows-1251

windows-1252

windows-1253

windows-1254

windows-1255

windows-1256

windows-1257

windows-1258

macintosh

x-mac-cyrillic

ISO-2022-JP

ISO-2022-KR

ISO-2022-CN

ISO-2022-CN-EXT

HZ-GB-2312

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Диагностировать имя, значение и источник при чтении DOM

Начало элемента имеет имя, а последующий текст — символьное значение. Метаданные источника показываем отдельно, не выдавая дерево в памяти за прочитанный файл определённой кодировки.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Документы и все узлы создаются в памяти на сервере. Внешние XML, DTD, сетевые схемы и файлы не загружаются.

  2. Сначала оставьте учебные имена и значения неизменёнными. После контрольного запуска меняйте по одному условию.

Документ = Новый ДокументDOM("", "product");
Документ.ВерсияXML = "1.0";
Документ.Автономный = Истина;
Документ.URIДокумента = "urn:guide:memory-source";
Документ.ЭлементДокумента.ДобавитьДочерний(Документ.СоздатьТекстовыйУзел("Книга"));
Чтение = Новый ЧтениеУзловDOM;
Чтение.Открыть(Документ);
Попытка
    Если Чтение.ПерейтиКСодержимому() <> ТипУзлаXML.НачалоЭлемента Тогда
        ВызватьИсключение "Не найден собственный корневой элемент";
    КонецЕсли;
    Сообщить(Чтение.ИмеетИмя);
    Сообщить(Не Чтение.ЭтоСимвольныеДанные);
    Сообщить(Чтение.ПубличныйИдентификатор = "");
    Сообщить(Чтение.СистемныйИдентификатор = "");
    Сообщить(Чтение.ИмяНотации = "");
    Сообщить("Версия XML читателя: " + Чтение.ВерсияXML);
    Сообщить("Автономный: " + Строка(Чтение.Автономный));
    Сообщить("Кодировка из объявления: " + Чтение.КодировкаXML);
    Сообщить("Кодировка источника: " + Чтение.КодировкаИсточника);
    Сообщить("Базовый URI: " + Чтение.БазовыйURI);
    Если Не Чтение.Прочитать() Тогда
        ВызватьИсключение "Не найден учебный текст";
    КонецЕсли;
    Сообщить(Чтение.ТипУзла = ТипУзлаXML.Текст);
    Сообщить(Чтение.ИмеетЗначение);
    Сообщить(Чтение.ЭтоСимвольныеДанные);
    Сообщить(Не Чтение.ЭтоПробельныеСимволы);
    Сообщить(Чтение.Значение = "Книга");
Исключение
    Чтение.Закрыть();
    ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();

Разбор по шагам

  1. Создаём DOM в памяти, задаём версию, автономность и собственный URI-идентификатор. URI не открывается как URL и не является путём файла.

  2. ПерейтиКСодержимому выбирает начало product. Здесь имя имеет смысл, а Public/System/Notation относятся к другим видам XML-узлов и пусты.

  3. Версию, кодировки, автономность и базовый URI выводим как фактическую диагностику читателя. Сведения о декларации/байтовом источнике могут отличаться от вручную созданных свойств документа, поскольку файл не читался.

  4. Прочитать переходит к тексту. ИмеетЗначение и ЭтоСимвольныеДанные показывают наличие текста, ЭтоПробельныеСимволы ложно для Книга.

  5. Читатель закрывается после использования и при ошибке.

Как проверить результат

  1. Все десять логических сообщений дают Истина.

  2. Последний узел — Текст со значением Книга; три идентификатора на начале product пустые.

  3. Пять диагностических строк источника выводят фактические значения, без требования «файл UTF-8 был прочитан».

Ожидаемый результат

Разделены флаги текущего XML-узла и сведения о происхождении/объявлении документа.

На что обратить внимание

  1. ИмеетЗначение не означает число или допустимое бизнес-значение: текст Книга остаётся строкой.

  2. КодировкаXML и КодировкаИсточника — разные сведения. По строке в памяти нельзя доказать, какие байты получил бы внешний сервис.

  3. ПубличныйИдентификатор, СистемныйИдентификатор и ИмяНотации читаются согласно типу текущего узла, не как универсальные идентификаторы товара.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.