XML marshaller/unmarshaller

Автор:Ulan
Дата:21.08.2019
Просмотров:2698
Скачиваний:558
Оценка:, Оценок - 3
Скачать (zip-файл; Размер - 6408)

Обсудить в форуме

Описание

Классы для перевода XML-структур в объекты и наоборот.

На больших объемах данных работает достаточно медленно, поэтому использовать для более менее небольших XML-структур.

Текст примера

 ПРИМЕР №1: (простой плоский объект с атрибутами)
class (TXmlBase) TPerson()
  initTXmlBase("PERSON");  // "PERSON" имя корневого тега

  XmlAttribute("sex", "sexAttr"); // sex-имя переменной в объекте, "sexAttr"-имя атрибута в XML
  var sex;

  XmlElement("firstName", "FIRST_NAME", TXmlHelper.PRIMITIVE_OBJECT); // "firstName"-имя переменной в объекте, "FIRST_NAME"-имя тега в XML, TXmlBase.PRIMITIVE_OBJECT-признак что значение примитивного типа
  var firstName;

  XmlElement("lastName", "LAST_NAME", TXmlHelper.PRIMITIVE_OBJECT); // "lastName"-имя переменной в объекте, "LAST_NAME"-имя тега в XML, TXmlBase.PRIMITIVE_OBJECT-признак что значение примитивного типа
  var lastName;

  XmlElement("age", "AGE", TXmlHelper.PRIMITIVE_OBJECT); // "age"-имя переменной в объекте, "AGE"-имя тега в XML, TXmlBase.PRIMITIVE_OBJECT-признак что значение примитивного типа
  var age;
end;

PrintLn("*************** МАРШАЛИНГ (ОБЪЕКТ В XML-СТРОКУ) ***************");
var marshaler = TXmlMarshaler();
var person = TPerson();
person.sex = "M";
person.firstName = "Иван";
person.age = 25;
PrintLn(marshaler.toXmlString(person)); // выведем сформированный XML на экран
PrintLn("---------------------------------------------------------------");

PrintLn("************** АНМАРШАЛИНГ (XML-СТРОКА В ОБЪЕКТ) **************");
var unmarshaler = TXmlUnmarshaler();
var xmlStr = "<PERSON sexAttr=\"M\"><FIRST_NAME>Колян</FIRST_NAME><LAST_NAME>Пуговкин</LAST_NAME><AGE>15</AGE></PERSON>";
var person2 = TPerson();
unmarshaler.fromXmlString(xmlStr, person2);
PrintLn("person2.sex      : " + person2.sex);
PrintLn("person2.firstName: " + person2.firstName);
PrintLn("person2.lastName : " + person2.lastName);
PrintLn("person2.age      : " + person2.age);
PrintLn("---------------------------------------------------------------");