XML.GetAttributeValue

From SunFlurry wiki
Jump to: navigation, search
  GetAttributeValue (Работа с атрибутами ветки)
Объект:Объект XML
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в число или строку, неверный индекс
Визуальность:Нет

Функция используется совместно с объектом ветки XML и возвращает значение атрибута текущей ветки по его индексу или наименованию. Наименования атрибутов ищутся с учетом регистра. Если в искомом имени не задано пространство имен, ищется атрибут с любым пространством имен с совпадающим именем. Чтобы форсировать поиск атрибутов без пространств имен в этом случае, необходимо указать в искомом имени пустое пространство имен (:<Имя атрибута>). Если атрибут не найден, будет вызвано исключение.

Синтаксис

XML.GetAttributeValue(<Индекс или имя атрибута с или без пространства имен (INT,STRING)>):<Значение адресуемого атрибута (STRING)>

Аргументы

  • <Индекс или имя атрибута с или без пространства имен (INT,STRING)> - Аргумент задает индекс или имя требуемого атрибута. Формат имени влияет на то, будут ли при поиске учитываться пространства имен. Формат может быть следующим:
    • аргумент имеет числовое значение -- будет возвращено значение атрибута с указанным индексом. Индексирование начинается с единицы.
    • имя атрибута без пространства имен (к примеру, tag) -- поиск будет происходить для имен атрибутов с любым пространством имен или без пространства имен вообще (т.е. для tag будут найдены tag, ns1:tag и т.п.).
    • имя атрибута с пространством имен (к примеру, ns1:tag) -- поиск будет происходить для имен атрибутов с указанным пространством имен (т.е. для ns1:tag не будут найдены tag, ns2:tag и т.п.).
    • имя атрибута с пустым пространством имен (к примеру, :tag) -- поиск будет происходить для имен атрибутов без пространства имен, имена атрибутов с пространствами имен будут пропускаться при поиске (т.е. для :tag не будут найдены ns1:tag, ns2:tag и т.п.).

Возвращаемое значение

Возвращает строковое значение

Примеры

aObject:=XML.Create();

//Добавление особой ветки
aObject.Text:="<?xml version=""1.0"" encoding=""UTF-8"" ?>";

//Позиционирование объекта ветки
aNode:=aObject.Root;

//Добавление обычной ветки
aNode:=aNode.AddNode("data",,"var1='value1' ns:var2=""some text"" var2=""same name with different ns is allowed""",0);

//Изменение значения текущей ветки (data)
//Значение может содержать подчиненные ветки
aNode.Value:="<subdata>text goes here...</subdata>";

//Будет выведено: "<?xml version="1.0" encoding="UTF-8" ?><data var1='value1' ns:var2="some text" var2="same name with different ns is allowed"><subdata>text goes here...</subdata></data>"
Message(aObject.Text);

//Изменение позиционирования
aNode.Path:="<data>";

Message("Атрибуты ветки "+aNode.Path+": ");
For i:=1 To aNode.AttributesCount() Do
  Message("  "+aNode.GetAttributeName(i,1)+": "+aNode.GetAttributeValue(i));
EndDo;
//Будут выведены атрибуты:
//  var1: value1
//  ns:var2: some text
//  var2: same name with different ns is allowed