<< Click to Display Table of Contents >> Navigation: Проект в MasterSCADA 4D > Дерево библиотек > Библиотека BaseObjects > BaseObjects.ФБ.Системные > Работа с файлами > XMLString |
Функциональный блок XMLString служит для загрузки XML в строковом виде, его модификации и сохранения.
Важно! Для возможности работы c ФБ XMLString в исполнительную систему должна входить опция MSRT4D-FileWork. Данная опция включена в базовый функционал лицензий Professional и Enterprise.
Этот функциональный блок может использоваться как самостоятельно, вне программ, так и в составе любой программы.
Находится в библиотеке BaseObjects.
Вид в дереве |
Вид в редакторе FBD |
Входы и выходы ФБ:
Название |
Тип |
Назначение |
Входы |
||
InContent |
STRING |
Указывается XML-строка, которую необходимо прочитать / модифицировать / сохранить. |
Load |
BOOL |
Загружает содержимое строки во внутреннее представление по переднему фронту |
Save |
BOOL |
Сохраняет по переднему фронту содержимое внутреннего представления в виде строки |
XPath |
STRING |
Указывается XPath-запрос для определения элемента или атрибута, с которым происходит работа. Также может быть выборка группы атрибутов, в этом случае возвращается массив значений. |
ReturnType |
BaseObjects.XMLReturnType |
Указывается тип возвращаемого на выходе OutValue значения: •String •Array •Struct •ArrayOfStruct •Boolean •Integer •Double |
GetValue |
BOOL |
Начинает по переднему фронту чтение значения, заданное на входе XPath |
SetValue |
BOOL |
Устанавливает по переднему фронту значение указанное на входе InValue на элемент/атрибут указанный на входе XPath |
InValue |
ANY |
Задается значение, которое необходимо установить элементу/атрибуту; |
AddElement |
BOOL |
Добавляет по переднему фронту дочерний элемент (к элементу, что задан в XPath) значение элемента задается на входе InValue как дочерний в элемент XPath; |
AddElementName |
STRING |
имя добавляемого элемента. |
Выходы |
||
OutContent |
STRING |
Выдается результирующая строка, полученная после изменения значения с False на TRUE входа Save |
OutValue |
ANY |
Выдается результат запроса, полученного после изменения значения с False на TRUE входа GetValue; |
ErrorCode |
DINT |
Выдается код ошибки; |
ErrorText |
STRING |
Выдается текст ошибки. |
0 - "Успешно",
1 - "Файл не найден",
2 - "Ошибка чтения",
3 - "Ошибка выделения памяти",
4 - "Внутренняя ошибка",
5 - "Синтаксический анализатор не смог определить тип тега",
6 - "Ошибка при разборе XML-декларации",
7 - "Ошибка при разборе комментария",
8 - "Ошибка при разборе CDATA секции",
9 - "Ошибка при разборе декларации типа документа",
10 - "Ошибка при разборе PCDATA секции",
11 - "Ошибка при разборе открывающего тега элемента",
12 - "Ошибка при разборе атрибута элемента",
13 - "Ошибка при разборе закрывающего тега элемента",
14 - "Несовпадение открывающего и закрывающего тега элемента",
15 - "Невозможно присоединить узел, так как корень не является элементом или корнем документа",
16 - "Синтаксический анализ произведен в документе, не имеющем элементов",
17 - "Элемент не найден",
18 - "Ошибка XPath-запроса".
Специальный тип данных, предназначенный для работы данного функционального блока. По сути своей представляет Перечисление со следующими значениями:
В случае если выбор типа производит оператор вручную, то для этого можно использовать элемент Выпадающий список. Параметр, получающий данные от выпадающего списка и передающий их на вход функционального блока (или программы, в которой он находится) должен иметь также тип XMLReturnType.
Как правило ФБ XMLString используется в комплекте с функциональными блоками FileToString и StringToFile.
1.На вход InContent была подана строка:
2.Содержимое будет передано во внутренний обработчик функционального блока, после изменения значения входа Load.
3.Теперь можно изменить содержимое загруженной строки. Изменим текст Enter topic text here. Для этого сформируем XPath-запрос. Этот текст находится в элементе para, поэтому запрос будет иметь вид: topic/body/para:
4.На вход InValue установим значение, например, Справочная система MasterSCADA 4D.
5.После изменения значения входа SetValue с False на TRUE элемент будет изменен внутри функционального блока.
6.Чтобы увидеть его на выходе OutContent результат, необходимо изменить значение входа Save с False на TRUE. Если вывести в окно значение выхода OutContent, то в клиенте визуализации получим:
Продолжаем работать со строкой, представленной в предыдущем разделе. Изменим значение атрибута styleclass элемента para.
1.Сформируем новый XPath-запрос topic/body/para/@styleclass. Видно, что к атрибуту элемента необходимо добавлять символ @.
2.На вход InValue установим значение, например, Heading2.
3. После изменения значения входа SetValue с False на TRUE элемент будут изменен внутри функционального блока.
4.Чтобы увидеть его на выходе OutContent результат, необходимо изменить значение входа Save с False на TRUE. Если вывести в окно значение выхода OutContent, то в клиенте визуализации получим:
Продолжаем работать со строкой, представленной в предыдущем разделе. В элемент body добавим новый элемент para1
1.Сформируем новый XPath-запрос topic/body
2.На входе AddElementName укажем имя нового элемента para1
3.На входе InValue установим значение, которое хотим присвоить новому элементу. Например, MasterSCADA 4D - любимая SCADA-система.
4. После изменения значения входа AddElement с False на TRUE элемент будет добавлен внутри функционального блока.
5.После изменения значения входа SetValue с False на TRUE элемент будут изменен внутри функционального блока.
6.Чтобы увидеть его на выходе OutContent результат, необходимо изменить значение входа Save с False на TRUE. Если вывести в окно значение выхода OutContent, то в клиенте визуализации получим: