コード例 #1
0
 def _set_attr(self, obj, attname, val):
     # tow possible values:
     # either we get value directly
     # or a dict if it s an object or a list
     if isinstance(val, (str, unicode)):
         pval = xmlparser.ua_type_to_python(val, obj.ua_types[attname])
         setattr(obj, attname, pval)
     else:
         # so we have either an object or a list...
         obj2 = getattr(obj, attname)
         if isinstance(
                 obj2, ua.NodeId
         ):  # NodeId representation does not follow common rules!!
             for attname2, v2 in val:
                 if attname2 == "Identifier":
                     if hasattr(ua.ObjectIds, v2):
                         obj2 = ua.NodeId(getattr(ua.ObjectIds, v2))
                     else:
                         obj2 = ua.NodeId.from_string(v2)
                     setattr(obj, attname, obj2)
                     break
         elif not isinstance(obj2, ua.NodeId) and not hasattr(
                 obj2, "ua_types"):
             # we probably have a list
             my_list = []
             for vtype, v2 in val:
                 my_list.append(xmlparser.ua_type_to_python(v2, vtype))
             setattr(obj, attname, my_list)
         else:
             for attname2, v2 in val:
                 self._set_attr(obj2, attname2, v2)
             setattr(obj, attname, obj2)
コード例 #2
0
ファイル: xmlimporter.py プロジェクト: iirob/python-opcua
 def _set_attr(self, obj, attname, val):
     # tow possible values:
     # either we get value directly
     # or a dict if it s an object or a list
     if isinstance(val, (str, unicode)):
         pval = xmlparser.ua_type_to_python(val, self._get_val_type(obj, attname))
         setattr(obj, attname, pval)
     else:
         # so we have either an object or a list...
         obj2 = getattr(obj, attname)
         if isinstance(obj2, ua.NodeId):  # NodeId representation does not follow common rules!!
             for attname2, v2 in val:
                 if attname2 == "Identifier":
                     if hasattr(ua.ObjectIds, v2):
                         obj2 = ua.NodeId(getattr(ua.ObjectIds, v2))
                     else:
                         obj2 = ua.NodeId.from_string(v2)
                     setattr(obj, attname, self._migrate_ns(obj2))
                     break
         elif not hasattr(obj2, "ua_types"):
             # we probably have a list
             my_list = []
             for vtype, v2 in val:
                 my_list.append(xmlparser.ua_type_to_python(v2, vtype))
             setattr(obj, attname, my_list)
         else:
             for attname2, v2 in val:
                 self._set_attr(obj2, attname2, v2)
             setattr(obj, attname, obj2)