XML-парсер "от О-Планета"


Парсер реализован средствами языка. Поставляется в виде внешней обработки. Может использоваться, как обработка, к методам которой можно обращаться из программы. Также модуль парсера может быть вставлен отдельно в конфигурацию, в качестве общего модуля. Реализованные методы поддерживают объектно-ориентированный принцип работы и предоставляют интуитивно понятный механизм.

Не спрашивайте, чем плохи стандартные методы работы с XML, реализованные в восьмерке. Просто разные парсеры и компиляторы - это моя слабость. Ну а потом, не видел (но, может, и ошибаюсь), чтобы стандартный парсер сразу выплевывал на форму дерево структуры XML-документа, позволял его редактировать, а потом снова сохранял в xml-документ.

В общем, эта обработка поможет тем, кто по каким-либо причинам не хочет (не может, боится) использовать типовые функции работы с XML. С "парсером от планета" XML - это просто! :)

Берите, тестируйте, пользуйтесь. Разработка снабжена подробной инструкцией.

Буду очень рад комментариям.

 


Отвечая на вопрос Чебуратора: "... а сабж - это что???", приведу небольшие примеры кода. Парсер позволяет читать, разбирать и создавать XML-файлы на интуитивном уровне.

Примеры создания xml:

ХМЛ = ХМЛСоздать();
Параметры = Новый Соответствие;
Параметры.Вставить("Название","Рога и копыта");
ХМЛДобавить(ХМЛ,"Организация",Параметры);
ХМЛДобавить(ХМЛ,"Сотрудник",, "Иванов", Истина);
ХМЛДобавить(ХМЛ,"Сотрудник",, "Петров", Истина);
ХМЛДобавить(ХМЛ,"Сотрудник",, "Сидоров", Истина);
Параметры.Вставить("Название","Бананы и ананасы");
ХМЛДобавить(ХМЛ,"Организация",Параметры);
ХМЛДобавить(ХМЛ,"Сотрудник",, "Дарт Вейдер", Истина);
ХМЛДобавить(ХМЛ,"Сотрудник",, "Джа-джа Бинг", Истина);
ХМЛДобавить(ХМЛ,"Сотрудник",, "Скайвокер", Истина);
ХМЛДобавить(ХМЛ,"Сотрудник",, "Чебурашка", Истина);
ХМЛЗаписать(ХМЛ,"c:\mydoc.xml");
ХМЛЗакрыть(ХМЛ);

Примеры чтения XML:

ХМЛ = ХМЛОткрыть("c:\mydoc1.xml");
Если ХМЛПрочитать(ХМЛ,"Сотрудник",Возвр) Тогда
Сообщить(СтрокуИзВеб(Возвр["Содержание"]));
КонецЕсли;
ХМЛЗакрыть(ХМЛ);

ХМЛ = ХМЛОткрыть("c:\mydoc.xml");
Если ХМЛПрочитать(ХМЛ,"Организация",Возвр) Тогда
СтрокаСотрудники = Возвр["Содержание"];
Пока Истина Цикл
Тег = Неопределено;
Если ХМЛПрочитатьИзСтроки(СтрокаСотрудники,Тег,Возвр) Тогда
Сообщить(Тег + ": " + СтрокуИзВеб(Возвр["Содержание"]));
КонецЕсли;
КонецЦикла;
КонецЕсли;
ХМЛЗакрыть(ХМЛ);

Пример построения дерева:

ХМЛ = ХМЛОткрыть("c:\mydoc.xml");
ХМЛРазобрать(ХМЛ,ДеревоОбработки);
ЭлементыФормы.ДеревоОбработки.СоздатьКолонки();
ХМЛЗакрыть(ХМЛ);

 


Обновил обработку. Добавил возможность выбора кодировки при чтении и записи файла. Также нашел примеры нестандартных XML, которые тоже теперь отрабатываются корректно.

Не отрабатывались XML без отдельного закрывающего тега. Такие XML - не есть канон. Но теперь и они нормально воспринимаются парсером.

***

Посмотрел-посмотрел на это чудо, добавил на форму командную панельку, привязал ее к дереву, а в состав методов прописал формирование XML-файла по структуре дерева. Вот и получился редактор. Теперь можно загрузить любой XML-файл, изменить в нем что-то в таблице дерева и сохранить снова в XML. При этом, можно перекодировать. Думаю, особо одаренные, кому эта тема интересна, могут добавить кучу разных полезностей. Например, чтобы можно было сразу добавлять что-то по данным из документов, реквизитов элементов справочника... Да мало ли что можно сделать, чтобы работать было быстро и удобно.

Обновление:

30.09.09 18:42 - Появилась полоса загрузки и парсится при построении дерева теперь в десятки тысяч раз быстрее. Исправил ошибку с кодировкой при записи.

30.09.09 19:17 - Исправил некорректную отработку специальных символов при парсинге

Файлы обработки:

-