APIUpdateListXML

Previous pageReturn to chapter overviewNext page

 

Обновляет один или несколько элементов списка.

 

 APIUpdateListXML(List, xml)

 

Аргументы

 

 List

 Числовое значение определяющее номер списка, см. перечисление Типы списков.

 

 xml

 Данные, содержащие один элемент, или список элементов. Имена элементов для разных списков описаны в разделе Типы списков. Формат XML данных описан в файле XML схемы schema.xsd. В процессе обновления данные проходят проверку на соответствие этой схеме, при этом может быть возвращена ошибка (исключение).

 

 

Замечание

 

 Данные при обновлении объекта, как правило, переписываются полностью. Т.е. должны быть заданы все XML атрибуты.

 

 

Пример использования

 

 Скрипт добавляет (либо меняет Имя) дополнительный атрибут клиента - в случае отсутствия. Если существует атрибут с заданным именем, но с другим GUID - такой атрибут удаляется.


Set Srv = CreateObject("TrafInsp.TrafInspAdmin")

APIPass = "123456" 'Пароль для доступа через API

Srv.APILogon(APIPass)

 

'Дополнительный атрибут клиента Сотовый телефон

AttrGUID = "{9B843411-1165-4562-8F98-77F0FC9FC894}"

AttrName = "Сотовый телефон"

AttrNote = "Сотовый"

 

Set Dom = WScript.CreateObject("Msxml2.DOMDocument.4.0")

Set DomX1 = WScript.CreateObject("Msxml2.DOMDocument.4.0")

Set DomX2 = WScript.CreateObject("Msxml2.DOMDocument.4.0")

 

'Вытаскиваем в XML список всех атрибутов абонентов

itUserAdvAttr = 17

Dom.LoadXML Srv.APIGetListXML(itUserAdvAttr, , , 2)

Set DocEl = Dom.DocumentElement

 

objPuth = "UserAttrItem[@GUID = '" & AttrGUID & "']"

Set currNode1 = DocEl.SelectSingleNode(objPuth)

'Проверка наличия заданного GUID атрибута

If currNode1 IS Nothing Then

   'Проверка наличия заданного имени атрибута

   objPuth = "UserAttrItem[@DisplayName = '" & AttrName & "']"

   Set currNode2 = DocEl.SelectSingleNode(objPuth)

   If currNode2 Is Nothing Then

      'Добавление элемента - если не найдено  

      DomX1.LoadXML "<UserAttrList/>" 

      Set Root = DomX1.DocumentElement

      With Root.AppendChild(DomX1.CreateElement("UserAttrItem"))

         .setAttribute "GUID", AttrGUID

         .setAttribute "DisplayName", AttrName

         .setAttribute "VisInList", -1

         .setAttribute "Note", AttrNote

         .setAttribute "ChangeLogging", -1

         .setAttribute "VisInMonitor", 0

      End With

      'Добавляем атрибут для клиента

      Srv.APIInsertListXML itUserAdvAttr, "", DomX1.xml

      WScript.Echo "Добавлен атрибут " & AttrName

   Else

      'Удаление существующего элемента с таким же именем

      DomX1.LoadXML "<UserAttrList/>" 

      Set Root = DomX1.DocumentElement

      Root.AppendChild(DomX1.CreateElement("UserAttrItem")).setAttribute "GUID", currNode2.getAttribute("GUID")

      Srv.APIDeleteListXML itUserAdvAttr, DomX1.xml

      WScript.Echo "Неправильный GUID у атрибута " & AttrName & "! Атрибут удален!"

      

      'Добавление элемента   

      DomX1.LoadXML "<UserAttrList/>" 

      Set Root = DomX1.DocumentElement

      With Root.AppendChild(DomX1.CreateElement("UserAttrItem"))

         .setAttribute "GUID", AttrGUID

         .setAttribute "DisplayName", AttrName

         .setAttribute "VisInList", -1

         .setAttribute "Note", AttrNote

         .setAttribute "ChangeLogging", -1

         .setAttribute "VisInMonitor", 0

      End With

      'Добавляем атрибут для клиента

      Srv.APIInsertListXML itUserAdvAttr, "", DomX1.xml

      WScript.Echo "  Добавлен атрибут " & AttrGUID & " " & AttrName

   End If

Else

   'Проверка соответствия имени найденного элемента

   If currNode1.getAttribute("DisplayName") <> AttrName Then

      'Изменение имени существующего элемента

      NameTCh = currNode1.getAttribute("DisplayName")

      WScript.Echo "Неправильное имя у атрибута " & AttrGUID & "!"

      DomX1.LoadXML Srv.APIGetListXML(itUserAdvAttr, , , 0)

      Set DocEl = DomX1.DocumentElement

      objPuth = "UserAttrItem[@GUID = '" & AttrGUID & "']"

      Set currNode2 = DocEl.SelectSingleNode(objPuth)

      currNode2.setAttribute "DisplayName", AttrName

 

      DomX2.LoadXML "<UserAttrList/>"    

      Set DocEl = DomX2.DocumentElement

      DocEl.appendChild currNode2

      DomX2.Save "tattr2.xml"

      'Меняем имя

      Srv.APIUpdateListXML itUserAdvAttr, DomX2.xml

      WScript.Echo "  Изменено имя атрибута с " & NameTCh & " на " & AttrName

   Else

      WScript.Echo "Атрибут " & AttrGUID & " " & AttrName & " уже есть"

   End If

End If

 


Текущая страница справки: help.smart-soft.ru/index.html?apiupdatelistxml.htm

Сайт разработчиков Traffic Inspector