15. XML в системе OpenSCADA (XMLNode)
XML в системе OpenSACDA представлен объектом XML-тега — XMLNode.
15.1. XML-тег (XMLNode)
Данные:
Опции загрузки XML-файла (enum — XMLNode::LoadFlgs):
- XMLNode::LD_Full — полная загрузка XML;
- XMLNode::LD_NoTxtSpcRemEnBeg — не удалять пробелы в начале и конце текста тега, для неполного режима.
Опции функции генерации XML-файла (enum — XMLNode::SaveView):
- XMLNode::BrOpenPrev — вставлять конец строки перед тегом открытия;
- XMLNode::BrOpenPast — вставлять конец строки после тега открытия;
- XMLNode::BrClosePast — вставлять конец строки после тега закрытия;
- XMLNode::BrTextPast — вставлять конец строки после текста тега;
- XMLNode::BrSpecBlkPast — вставлять конец строки после вычислительной инструкции;
- XMLNode::BrAllPast — вставлять конец строки после всех элементов;
- XMLNode::XMLHeader — вставлять стандартный xml-заголовок;
- XMLNode::Clean — очистка результата от комментариев и процедурных вставок;
- XMLNode::XHTMLHeader — вставлять стандартный XHTML-заголовок;
- XMLNode::MissTagEnc — пропускать кодирование имён тегов;
- XMLNode::MissAttrEnc — пропускать кодирование имён атрибутов.
Публичные методы:
- XMLNode( const string &name = "" ); — Инициализация тега с именем name.
- XMLNode( const XMLNode &nd ); — Копирующий конструктор.
- XMLNode &operator=( const XMLNode &prm ); — Копирование ветки XML-дерева из prm.
- string name( ) const; — Имя тега.
- XMLNode* setName( const string &s ); — Установка имени тега в s.
- string text( bool childs = false, bool recursive = false ) const; — Текст тега. childs — для получения текст из специализированных узлов текста.
- XMLNode* setText( const string &s, bool childs = false ); — Установка текста тега в s. childs — для установки текста в специализированный узел текста.
- void attrList( vector<string> & list ) const; — Список атрибутов list в теге.
- XMLNode* attrDel( const string &name ); — Удаление атрибута name.
- void attrClear( ); — Очистка атрибутов тега.
- string attr( const string &name, bool caseSens = true ) const; — Получение атрибута name.
- XMLNode* setAttr( const string &name, const string &val ); — Установка/создание атрибута name со значением val.
- void load( const string &vl, unsigned flg = 0, const string &cp = "UTF-8" ); — Загрузка/парсинг XML-файла, с кодировкой cp и флагами flg.
- string save( unsigned flg = 0, const string &cp = "UTF-8" ) const; — Сохранение/создание XML-файла с параметрами форматирования flg и кодировкой cp.
- XMLNode* clear( ); — Очистка тега (рекурсивно, включая все вложения).
- bool childEmpty( ) const; — Проверка на отсутствие вложенных тегов.
- unsigned childSize( ) const; — Количество вложенных тегов.
- void childAdd( XMLNode *nd ); — Добавление вложенного тега.
- XMLNode* childAdd( const string &name = "" ); — Добавление вложенного тега.
- int childIns( int id, XMLNode *nd ); — Вставка вложенного тега в позицию id. Отрицательный id отсчитывает с конца.
- XMLNode* childIns( int id, const string &name = "" ); — Вставка вложенного тега с именем name в позицию id. Отрицательный id отсчитывает с конца.
- void childDel( const int id ); — Удаление вложенного тега id. Отрицательный id отсчитывает с конца.
- void childDel( XMLNode *nd ); — Удаление вложенного тега по его адресу nd.
- void childClear( const string &name = "" ); — Очистка вложенного тега name.
- XMLNode* childGet( const int, bool noex = false ) const; — Получение вложенного тега по порядковому номеру.
- XMLNode* childGet( const string &name, const int numb = 0, bool noex = false ) const; — Получение вложенного numb порядкового тега по имени тега name. noex указывает на запрет генерации исключения в случае отсутствия тега.
- XMLNode* childGet( const string &attr, const string &vl, bool noex = false ) const; — Получение вложенного numb порядкового тега по значению vl атрибута attr. noex указывает на запрет генерации исключения в случае отсутствия тега.
- XMLNode* getElementBy( const string &attr, const string &val ); — Поиск вложенного узла по значению val атрибута attr.
- void getElementsBy( const string &tag, const string &attr, const string &val, TArrayObj *rez ); — получение массива элементов в rez из дерева по тегу tag (пустой для всех) и атрибуту attr со значением val (пустые для пропуска).
- XMLNode* parent( ); — Родительский тег данного тега.
- XMLNode* root( ); — Корневой тег данного тега.