15. XML в системе OpenSCADA (XMLNode)
XML в системе OpenSACDA представлен объектом XML-тега - XMLNode.
15.1. XML-тег (XMLNode)
Данные:
Опции функции генерации XML-файла (enum - XMLNode::SaveView):
- XMLNode::BrOpenPrev - вставлять конец строки перед тегом открытия;
- XMLNode::BrOpenPast - вставлять конец строки после тега открытия;
- XMLNode::BrClosePast - вставлять конец строки после тега закрытия;
- XMLNode::BrTextPast - вставлять конец строки после текста тега;
- XMLNode::BrSpecBlkPast - вставлять конец строки после вычислительной инструкции;
- XMLNode::BrAllPast - вставлять конец строки после всех элементов.
- XMLNode::XMLHeader - вставлять стандартный xml-заголовок.
- 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, bool full = false, const string &cp = "UTF-8" ); - Загрузка/парсинг XML-файла, с кодировкой <cp>. <full> - для полной загрузки XML с блоками текстов и комментариев в специализированных узлах.
- string save( unsigned flgs = 0, const string &cp = "UTF-8" ); - Сохранение/создание XML-файла с параметрами форматирования <flgs> и кодировкой <cp>.
- XMLNode* clear( ); - Очистка тега (рекурсивно, включая все вложения).
- bool childEmpty( ) const; - Проверка на отсутствие вложенных тегов.
- unsigned childSize( ) const; - Количество вложенных тегов.
- void childAdd( XMLNode *nd ); - Добавление вложенного тега.
- XMLNode* childAdd( const string &name = "" ); - Добавление вложенного тега.
- int childIns( unsigned id, XMLNode *nd ); - Вставка вложенного тега в позицию <id>.
- XMLNode* childIns( unsigned id, const string &name = "" ); - Вставка вложенного тега с именем <name> в позицию <id>.
- void childDel( const unsigned 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 &name, bool noex = false ) const; - Получение вложенного <numb> порядкового тега по значению <name> атрибута <attr>. <noex> указывает на запрет генерации исключения в случае отсутствия тега.
- XMLNode* parent( ); - Родительский тег данного тега.