“”"
modify xml for run cpipe
“”"
import xml.etree.ElementTree as ET
import os
import re
def version_xml_handle():
return “xml_handel.py ver 1.0.0.1”
def parse_xml(xml_name):
tree = ET.parse(xml_name)
root = tree.getroot()
return root, tree
def write_xml(tree, out_filename):
tree.write(out_filename, encoding=“utf-8”, xml_declaration=True)
def find_nodes(root, node_name):
return root.findall(node_name)
def get_key(node, key_name):
if node.find(key_name) != None:
return node.find(key_name).text
return None
def change_key(root, key_name, value):
root.find(key_name).text = value
def replace_param(root, com_data, param_name, param_data, com_class="", prefix=False):
“”"
replace xml param with new input param by
“”"
components = find_nodes(root, ‘component’)
output = False
# print "replace " , com_data, prefix
for c in components:
if com_class == “”:
name = find_nodes(c, ‘name’)
if name.len() == 0 or name[0].text != com_data:
continue
else:
class_ = find_nodes(c, ‘class’)
if class_.len() == 0 or class_[0].text != com_class:
continue
# print name[0].text
parameters = find_nodes(c, ‘parameters’)
if parameters.len() != 0:
parameter = find_nodes(parameters[0], param_name)
if parameter.len() != 0:
if prefix is True:
if parameter[0].text[0] != “":
parameter[0].text = "” + parameter[0].text
parameter[0].text = param_data + parameter[0].text
else:
parameter[0].text = param_data
output = True
if com_class == “”:
break
if output is False:
print(“find %s in %s failed.” % (param_name, com_data))
return output
def overwrite_xml_param(xml_name, com_name, pattern, com_class=""):
root, tree = parse_xml(xml_name)
for name, data in pattern.items():
replace_param(root, com_name, name, str(data), com_class)
write_xml(tree, xml_name)
def prefix_xml_param(xml_name, com_name, pattern, com_class=""):
root, tree = parse_xml(xml_name)
for name, data in pattern.items():
replace_param(root, com_name, name, str(data), com_class=com_class, prefix=True)
write_xml(tree, xml_name)