класс для работы с XML

Класс предназначен для настраиваемого извне формата таблиц для преобразования плоских курсоров в xml

класс для работы с XML

На сайте в конференции обсуждался вопрос "Зачем нужен XML".
Классическое мнение - его используют для передачи данных в многоплатформенных приложениях. Это неоспоримо, хотя на мой взгляд очень много избыточности (теги и прочее), особенно передача через интернет.
Встечаются задачи (и очень часто), когда в таблицу необходимо положить очень много полей, и поля эти могут меняться во времени, как количественно, так и качественно. Вот тут XML и выручает. В таблице выделяется MEMO поле под XML код, и хранится в нем любое количество разнообразных полей, причем для каждой записи в таблице, набор полей в XML коде может быть разный. Для работы с таким полем предлагается следующий класс, позволяющий получать XML код из именованного массива и упаковывать данные массива в XML код.
Для распаковки XML используется Microsoft.XMLDom.
Пример

    LOCAL oXML oXML = NEWOBJECT('xml_object', 'xml_object.vcx')   
 ***Создание таблицы CREATE CURSOR TestXML (Id I, TextXML M)   
 ***Добавление свойств в объект oXML   
  oXML.Set_property('Text_1', 'Тестовый текст 1')   
  oXML.Set_property('Text_2', 'Тестовый текст 2')   
  oXML.Set_property('Text_3', 'Тестовый текст 3')   
  oXML.Set_property('Integer_1', 123)   
  oXML.Set_property('Integer_2', 456)   
  oXML.Set_property('Integer_3', 789)   
  oXML.Set_property('Numeric_1', 1.23)   
  oXML.Set_property('Numeric_2', 4.56)   
  oXML.Set_property('Numeric_3', 7.89)   
  oXML.Set_property('Logic_1', .T.)   
  oXML.Set_property('Logic_2', .F.)   
 ***Добавление записи в таблицу (идентификатор и MEMO поле с XML данными)   
  APPEND BLANK replace Id WITH 1, TextXML WITH oXML.get_xml()   
  ?TestXML.TextXML    
 ***То что хранится в поле TextXML: ***   
 ***Тестовый текст 1   
 ***Тестовый текст 2   
 ***Тестовый текст 3   
 ***123.00 ***456.00   
 ***789.00   
 ***1.23   
 ***4.56   
 ***7.89   
 ***1   
 ***0 ***    
 ***Очистка объекта oXML (удаление всех ранее добавленных свойств)   
  oXML.RemoveAll()   
 ***Загрузка XML кода в объект oXML   
  oXML.load_xml(TestXML.TextXML)   
 ***Получение данных из объекта oXML   
  ?oXML.get_property('Text_1')   
  ?oXML.get_property('Text_2')   
  ?oXML.get_property('Text_3')   
  ?oXML.get_property('Integer_1')   
  ?oXML.get_property('Integer_2')   
  ?oXML.get_property('Integer_3')   
  ?oXML.get_property('Numeric_1')   
  ?oXML.get_property('Numeric_2')   
  ?oXML.get_property('Numeric_3')   
  ?oXML.get_property('Logic_1')   
  ?oXML.get_property('Logic_2')   
  USE IN TestXML   
Автор: Владимир Хитяев

Автор публикации

не в сети 3 месяца

admin

Комментарии: 1Публикации: 123Регистрация: 10-12-2000
Вложенные файлы
#
Название
Тип файла
Размер
1 355xml .zip 3,93 КБ
Материалы по теме
Оставить комментарий
//////////////// ///////////////
Авторизация
*
*
Генерация пароля