分类: Python/Ruby
2014-12-27 09:44:57
一、解析文件
点击(此处)折叠或打开
解析文件的时候有两种常见的错误,
找不到文件:IOError
文件格式非法:xml.etree.ElementTree.ParseError
二、增删节点
# 新建节点
ET.Element(tag, attrib={}, **extra)
# 新建子节点,返回subelement
ET.SubElement(parent,tag, attrib={}, **extra)
# 添加子节点
element.append(subelement)
# 删除子节点
element.remove(subelement)
三、element的内容
element.tag:节点标签(名称),
element.text:一个节点首tag与尾tag之间的全部内容;
element.tail:第一个节点结尾()到第二个节点开头(
element.attrib:由一个节点全部属性构成的字典
注意:修改该字典的内容会直接修改对应节点的属性,其实节点属性在内存中就是以字典的形式存储的。element属性相关的函数中并没有提供删除属性的函数,我们则可以使用del来删除“del node.attrib[key]”!!!
注意:虽然python声称text和tail可以使任意应用程序中的任意结构类型,但是只要不是字符串,那么在写入文件的时候都会报错提示无法序列化。
"cannotserialize %r (type %s)" % (text,
type(text).__name__)
TypeError: cannot serialize {'1': 'vt1', '2': 'vt2'} (type dict)
四、element属性相关的函数
element.keys():获取节点所有属性的key列表,返回列表
五、element查找子节点相关的函数
element.find(match):获取第一个匹配的子节点,返回一个element迭代器查找:
element.iter(tag=None):以 当前节点为根节点建立一颗迭代树,按照节点的深度依次遍历每一个节点,如果参数tag不为None且不为'*',那么只要节点的tag与参数指定的tag 相等,该节点就会从迭代器中返回。迭代器是动态遍历的,遇到匹配节点就返回,然后再接着遍历,如果遍历过程中树的结构被改变,那么结果是不可预知的。