创建树节点
创建节点时,一定要指定节点名
tree_node = Element("node1")
print(tree_node.tag) # 输出 node1
print(tree_node.text) # 输出 None
print(tree_node.tail) # 输出 None
print(tree_node.attrib) # 输出 {}
也可在创建时指定属性
tree_node = Element("node2", {"attr1": 1, "attr2": 2})
print(tree_node.tag) # 输出 node2
print(tree_node.text) # 输出 None
print(tree_node.tail) # 输出 None
print(tree_node.attrib) # 输出 {'attr1': 1, 'attr2': 2}
设置文本(Element.text)或附加文本(Element.tail)
tree_node = Element("node1")
tree_node.text = "Hello world"
tree_node.tail = "Bye"
添加子节点
可以用Element.append()成员函数添加子节点
root = Element("root")
child1 = Element("child1")
child2 = Element("child2")
root.append(child1)
root.append(child2)
访问子节点
Element类用私有成员 Element._children
存放子节点,该私有成员是一个 list 变量。
为了方便访问子节点,Element封装了下标索引函数,使用时可以把 Element 想象成一个 list
变量:
- 用
len(Element)
检查子节点个数 - 用
Element[0]
访问第0个子节点,Element[1]
访问第1个子节点... - 用
for child in Element
遍历所有子节点 - 用
Element.remove(child)
删除某个子节点
root = Element("root")
child1 = Element("child1")
child2 = Element("child2")
root.append(child1)
root.append(child2)
print(len(root)) # 2
print(root[0].tag) # child1
root.remove(child1)
print(len(root)) # 1
树结构与XML字符串的相关转换
from xml.etree.ElementTree import Element, tostring, fromstring
root = Element("root")
child1 = Element("child1")
child2 = Element("child2")
root.append(child1)
root.append(child2)
tree_str = tostring(root, encoding="unicode")
print(tree_str)
# '<root><child1 /><child2 /></root>''
new_root = fromstring(tree_str)
print(new_root.tag, new_root[0].tag, new_root[1].tag)
# root child1 child2
快捷操作
添加子节点可以用SubElement构造函数快速实现
from xml.etree.ElementTree import Element, SubElement
root = Element("root")
child = Element("child")
root.append(child)
# 等价于
root = Element("root")
child = SubElement(root, "child")
作者:文均
链接:https://www.jianshu.com/p/d9a13c822265
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。