ElementTree

创建树节点

创建节点时,一定要指定节点名

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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/caicai0001000/article/details/111341828
今日推荐