Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
opcua-asyncio
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nikola Balog
opcua-asyncio
Commits
64510479
Commit
64510479
authored
Dec 07, 2016
by
mvdweert
Committed by
ORD
Dec 08, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[XmlExporter] possibility to provide an order for extension object members
parent
71c8c618
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
2 deletions
+24
-2
opcua/common/xmlexporter.py
opcua/common/xmlexporter.py
+24
-2
No files found.
opcua/common/xmlexporter.py
View file @
64510479
...
@@ -14,6 +14,17 @@ from opcua.common.ua_utils import get_base_data_type
...
@@ -14,6 +14,17 @@ from opcua.common.ua_utils import get_base_data_type
class
XmlExporter
(
object
):
class
XmlExporter
(
object
):
''' If it is required that for _extobj_to_etree members to the value should be written in a certain
order it can be added to the dictionary below.
'''
extobj_ordered_elements
=
{
ua
.
NodeId
(
ua
.
ObjectIds
.
Argument
)
:
[
'Name'
,
'DataType'
,
'ValueRank'
,
'ArrayDimensions'
,
'Description'
]
}
def
__init__
(
self
,
server
):
def
__init__
(
self
,
server
):
self
.
logger
=
logging
.
getLogger
(
__name__
)
self
.
logger
=
logging
.
getLogger
(
__name__
)
self
.
server
=
server
self
.
server
=
server
...
@@ -407,9 +418,20 @@ class XmlExporter(object):
...
@@ -407,9 +418,20 @@ class XmlExporter(object):
id_el
.
text
=
dtype
.
to_string
()
id_el
.
text
=
dtype
.
to_string
()
body_el
=
Et
.
SubElement
(
obj_el
,
"uax:Body"
)
body_el
=
Et
.
SubElement
(
obj_el
,
"uax:Body"
)
struct_el
=
Et
.
SubElement
(
body_el
,
"uax:"
+
name
)
struct_el
=
Et
.
SubElement
(
body_el
,
"uax:"
+
name
)
for
name
,
vtype
in
val
.
ua_types
.
items
():
for
name
in
self
.
_get_member_order
(
dtype
,
val
):
self
.
member_to_etree
(
struct_el
,
name
,
ua
.
NodeId
(
getattr
(
ua
.
ObjectIds
,
vtype
)),
getattr
(
val
,
name
))
self
.
member_to_etree
(
struct_el
,
name
,
ua
.
NodeId
(
getattr
(
ua
.
ObjectIds
,
val
.
ua_types
[
name
])),
getattr
(
val
,
name
))
def
_get_member_order
(
self
,
dtype
,
val
):
'''
If an dtype has an entry in XmlExporter.extobj_ordered_elements return the export order of the elements
else return the unordered members.
'''
if
dtype
not
in
XmlExporter
.
extobj_ordered_elements
.
keys
():
return
val
.
ua_types
.
keys
()
else
:
member_keys
=
[
name
for
name
in
XmlExporter
.
extobj_ordered_elements
[
dtype
]
if
name
in
val
.
ua_types
.
keys
()
and
getattr
(
val
,
name
)
is
not
None
]
return
member_keys
def
indent
(
self
,
elem
,
level
=
0
):
def
indent
(
self
,
elem
,
level
=
0
):
"""
"""
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment