ET.find(path[, namespaces=D])
This method is used to find a specific single element in the document. It is essentially equivalent to calling the .find()
method on the document's root element;
root = ElementTree.fromstring(text)
# 获取element的方法
# 1 通过getiterator
infra_node = root.getiterator("virtual-infrastructure")
#for node in lst_node:
# print_node(node)
# 2通过 getchildren Deprecated since version 2.7: Use
list(elem)
or iteration
lst_node_child = infra_node[0].getchildren()[0]
print_node(lst_node_child)
# 3 .find方法
node_find = root.find('address')
#print_node(node_find)
#4. findall方法
node_findall = root.findall("virtual-infrastructure/vm")[0]
#print_node(node_findall)
写xml element
def _add_rm_elem(self, build_odpx):
ET.register_namespace('', URL)ET.register_namespace('xsi', XSI)
ET.register_namespace('schemaLocation', SCHEMAL)
root = ET.parse(build_odpx)
build_elem = root.find('{}build'.format(_XML_NS))
process_elem = build_elem.find('{}process'.format(_XML_NS))
rm_folders = []
for exe_elem in process_elem.findall('{}execute'.format(_XML_NS)):
if "mkdir" in exe_elem.text:
rm_folder = exe_elem.text.replace("mkdir", "rm -rf")
rm_folders.append(rm_folder)
for rm_folder in rm_folders:
element = ET.Element("execute")
element.text = rm_folder
process_elem.append(element)
root.write(build_odpx, encoding="utf-8",xml_declaration=True)