Skip to content

Commit 1bf806e

Browse files
bitkeeperoroulet
authored andcommitted
xmlexport improve compat with xml schema (#380)
* xmlexport improve compat with xml schema * revert changes to _extobj_to_etree, do fix argument member order in other pr
1 parent 63a85c1 commit 1bf806e

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

opcua/common/xmlexporter.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ def add_etree_variable(self, node):
236236
Add a UA variable element to the XML etree
237237
"""
238238
var_el = self._add_node_common("UAVariable", node)
239+
self._add_ref_els(var_el, node)
239240
self.add_variable_common(node, var_el)
240241

241242
accesslevel = node.get_attribute(ua.AttributeIds.AccessLevel).Value.Value
@@ -254,7 +255,6 @@ def add_etree_variable(self, node):
254255
var = node.get_attribute(ua.AttributeIds.Historizing)
255256
if var.Value.Value:
256257
var_el.attrib["Historizing"] = 'true'
257-
self._add_ref_els(var_el, node)
258258

259259
def add_etree_variable_type(self, node):
260260
"""
@@ -313,7 +313,8 @@ def _add_alias_els(self):
313313
ref_el = Et.SubElement(aliases_el, 'Alias', Alias=name)
314314
ref_el.text = nodeid.to_string()
315315

316-
self.etree.getroot().insert(0, aliases_el)
316+
# insert behind the namespace element
317+
self.etree.getroot().insert(1, aliases_el)
317318

318319
def _add_ref_els(self, parent_el, obj):
319320
refs = obj.get_references()
@@ -351,6 +352,8 @@ def _val_to_etree(self, el, dtype, val):
351352
elif dtype == ua.NodeId(ua.ObjectIds.Guid):
352353
id_el = Et.SubElement(el, "uax:String")
353354
id_el.text = str(val)
355+
elif dtype == ua.NodeId(ua.ObjectIds.Boolean):
356+
el.text = 'true' if val else 'false'
354357
elif not hasattr(val, "ua_types"):
355358
if isinstance(val, bytes):
356359
el.text = val.decode("utf-8")
@@ -392,7 +395,7 @@ def _value_to_etree(self, el, type_name, dtype, val):
392395
if dtype_base.NamespaceIndex == 0 and dtype_base.Identifier <= 21:
393396
type_name = ua.ObjectIdNames[dtype_base.Identifier]
394397
val_el = Et.SubElement(el, "uax:" + type_name)
395-
self._val_to_etree(val_el, dtype, val)
398+
self._val_to_etree(val_el, dtype_base, val)
396399
else:
397400
self._extobj_to_etree(el, type_name, dtype, val)
398401

0 commit comments

Comments
 (0)