3 # Copyright (c) 2014 Intel Corporation. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file.
8 The public interface functions of handling xml.
12 def AddElementAttribute(doc, node, name, value):
13 root = doc.documentElement
14 item = doc.createElement(node)
15 item.setAttribute(name, value)
16 root.appendChild(item)
19 def EditElementAttribute(doc, node, name, value):
20 item = doc.getElementsByTagName(node)[0]
21 if item.hasAttribute(name):
22 item.attributes[name].value = value
24 item.setAttribute(name, value)
27 def EditElementValueByNodeName(doc, node, name, value):
28 items = doc.getElementsByTagName(node)
30 if item.attributes['name'].value == name:
31 item.firstChild.data = value
35 def AddElementAttributeAndText(doc, node, name, value, data):
36 root = doc.documentElement
37 item = doc.createElement(node)
38 item.setAttribute(name, value)
39 text = doc.createTextNode(data)
40 item.appendChild(text)
41 root.appendChild(item)
44 def CompareNodes(node1, node2):
45 if node1.tagName != node2.tagName or node1.attributes is None:
47 if node2.attributes is None:
50 for item in node2.attributes.items():
51 if not item in node1.attributes.items():
56 def MergeNodes(node1, node2):
58 for item2 in node2.childNodes:
59 if item2.nodeType != item2.ELEMENT_NODE:
62 for tmp_item in node1.childNodes:
63 if tmp_item.nodeType != tmp_item.ELEMENT_NODE:
65 if CompareNodes(tmp_item, item2):
69 MergeNodes(item1, item2)
71 tmp_node_list.append(item2)
73 for item in tmp_node_list:
74 node1.appendChild(item)