@@ -53,7 +53,7 @@ def import_xml(self, xmlpath):
5353
5454 self .namespaces = self ._map_namespaces (self .parser .get_used_namespaces ())
5555 self .aliases = self ._map_aliases (self .parser .get_aliases ())
56-
56+
5757 dnodes = self .parser .get_node_datas ()
5858 dnodes = self .make_objects (dnodes )
5959 nodes_parsed = self ._sort_nodes_by_parentid (dnodes )
@@ -98,7 +98,7 @@ def _add_references(self, refs):
9898 return self .server .iserver .isession .add_references (refs )
9999 else :
100100 return self .server .uaclient .add_references (refs )
101-
101+
102102 def make_objects (self , node_datas ):
103103 new_nodes = []
104104 for ndata in node_datas :
@@ -206,8 +206,21 @@ def add_variable(self, obj):
206206 res [0 ].StatusCode .check ()
207207 return res [0 ].AddedNodeId
208208
209+ def _get_ext_class (self , name ):
210+ if hasattr (ua , name ):
211+ return getattr (ua , name )
212+ elif name in self .aliases .keys ():
213+ nodeid = self .aliases [name ]
214+ class_type = ua .uatypes .get_extensionobject_class_type (nodeid )
215+ if class_type :
216+ return class_type
217+ else :
218+ raise Exception ("Error no extension class registered " , name , nodeid )
219+ else :
220+ raise Exception ("Error no alias found for extension class" , name )
221+
209222 def _make_ext_obj (self , obj ):
210- ext = getattr ( ua , obj .objname )()
223+ ext = self . _get_ext_class ( obj .objname )()
211224 for name , val in obj .body :
212225 if isinstance (val , str ):
213226 raise Exception ("Error val should a dict" , name , val )
0 commit comments