Преобразует текст формата XML в таблицу значений, при этом колонки таблицы формируются на основе описания в XML.
// Преобразует текст формата XML в таблицу значений,
// при этом колонки таблицы формируются на основе описания в XML.
//
// Параметры:
// ТекстXML - текст в формате XML.
//
// Схема XML:
//<?xml version="1.0" encoding="utf-8"?>
//<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
// <xs:element name="Items">
// <xs:complexType>
// <xs:sequence>
// <xs:element maxOccurs="unbounded" name="Item">
// <xs:complexType>
// <xs:attribute name="Code" type="xs:integer" use="required" />
// <xs:attribute name="Name" type="xs:string" use="required" />
// <xs:attribute name="Socr" type="xs:string" use="required" />
// <xs:attribute name="Index" type="xs:string" use="required" />
// </xs:complexType>
// </xs:element>
// </xs:sequence>
// <xs:attribute name="Description" type="xs:string" use="required" />
// <xs:attribute name="Columns" type="xs:string" use="required" />
// </xs:complexType>
// </xs:element>
//</xs:schema>
//
// Примеры XML-файлов см. в демонстрационной конфигурации.
//
// Пример использования:
// КлассификаторТаблица = ПрочитатьXMLВТаблицу(РегистрыСведений.АдресныйКлассификатор.
// ПолучитьМакет("КлассификаторАдресныхОбъектовРоссии").ПолучитьТекст());
//
// Возвращаемое значение:
// ТаблицаЗначений.
//
Функция ПрочитатьXMLВТаблицу(ТекстXML) Экспорт
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(ТекстXML);
// Прочитаем первый узел и проверим его
Если Не Чтение.Прочитать() Тогда
ВызватьИсключение("Пустой XML");
ИначеЕсли Чтение.Имя <> "Items" Тогда
ВызватьИсключение("Ошибка в структуре XML");
КонецЕсли;
// Получим описание таблицы и создадим ее
ИмяТаблицы = Чтение.ПолучитьАтрибут("Description");
ИменаКолонок = СтрЗаменить(Чтение.ПолучитьАтрибут("Columns"), ",", Символы.ПС);
Колонок = СтрЧислоСтрок(ИменаКолонок);
ТаблицаЗначений = Новый ТаблицаЗначений;
Для Сч = 1 По Колонок Цикл
ТаблицаЗначений.Колонки.Добавить(СтрПолучитьСтроку(ИменаКолонок, Сч), Новый ОписаниеТипов("Строка"));
КонецЦикла;
// Заполним значения в таблице
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда
Продолжить;
ИначеЕсли Чтение.Имя <> "Item" Тогда
ВызватьИсключение("Ошибка в структуре XML");
КонецЕсли;
новСтр = ТаблицаЗначений.Добавить();
Для Сч = 1 По Колонок Цикл
ИмяКолонки = СтрПолучитьСтроку(ИменаКолонок, Сч);
новСтр[Сч-1] = Чтение.ПолучитьАтрибут(ИмяКолонки);
КонецЦикла;
КонецЦикла;
// Заполним результат
Результат = Новый Структура;
Результат.Вставить("ИмяТаблицы", ИмяТаблицы);
Результат.Вставить("Данные", ТаблицаЗначений);
Возврат Результат;
КонецФункции // ПрочитатьXMLВТаблицу()
Орфографическая ошибка в xmlns: xmlns Заголовок публикации состоит из слитных слов. Разделите их пробелами, если это не общепринятое название и не имя собственное.
ПрочитатьТаблицуСовместимости (БСП)
Прочитать таблицу значений из XML
ПрочитатьДанныеИзБезопасногоХранилища (БСП)