XML.FirstChild

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

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

Синтаксис

XML.FirstChild(<Имя ветки с или без пространства имен (STRING)>=""):<Первая ветка, вложенная в текущий объект или ноль (XMLBRANCH,INT)>

Аргументы

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

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

Возвращает объект найденной ветки или ноль.

Примеры

  //Рекурсивная функция вывода и обхода
  Function ВывестиДеревоФайла(аВетка,Стр="")
    //Если следующей ветки нет, переменная будет равна нулю
    While Not IsEmpty(аВетка) Do
      //Вывод имени ветки, значения (если нет вложенных веток) и полного пути ветки
      Message(Стр+аВетка.FullName+?(_And(аВетка.Count()=0,аВетка.Value<>"")," ---> """+аВетка.Value+"""")+", Путь: "+аВетка.Path);
      //Вызов функции для вложенных веток
      ВывестиДеревоФайла(аВетка.FirstChild(),Стр+"  ");
      //Найти следующую ветку на текущем уровне
      аВетка:=аВетка.Next();
    EndDo;
  EndFunction

аОб:=XML.create();
Стр:=аОб.LoadFromFile("c:\file.xml",65001);
If IsEmpty(Стр) Then
  //Вызов рекурсивного вывода дерева загруженного файла XML
  ВывестиДеревоФайла(аОб.FirstChild());
Else
  Message("Найдены ошибки при загрузке файла:"+_NEWLINE+Стр);
EndIf;