python通过ElementTree操作XML获取结点读取属性美化XML

yipeiwu_com6年前Python基础

1.引入库
需要用到3个类,ElementTree,Element以及建立子类的包装类SubElement
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import SubElement as SE

2.读入并解析
tree = ElementTree(file=xmlfile)
root = tree.getroot()
读入后,tree是ElementTree的类型,获取xml根结点使用getroot()方法;

XML示例文件:

复制代码 代码如下:

<item sid='1712' name = '大CC'  >
<a id=1></a>
<a id=2></a>
</item>

3.获取儿子结点
查找Element的所有子结点:

复制代码 代码如下:

AArry = item.findall('a')
也可使用getchildren():
childs =  item.getchildren()
     for subItem in childs:
           print subItem.get('id')

4.插入儿子结点
方法一:

复制代码 代码如下:

 item = Element("item", {'sid' : '1713', 'name' : 'ityouhui'})
 root.append(item)

方法二:
复制代码 代码如下:

SE(root,'item',{'sid':'1713','name':'ityouhui'})

法一的好处是插入之后可以对item继续操作。法二是写法上简单,其中SE就是SubElement,在引入处做了声明;

5.操作属性
获取Element的某个属性值(eg:获取item的 name)

复制代码 代码如下:

print root.find('item/name').text
print item.get('name')

获取Element所有属性
复制代码 代码如下:

print item.items()       # [('sid', '1712'), ('name', '大CC')]
print item.attrib        # {'sid': '1712', 'name': '大CC'}

6.美化XML
在写入之前,传入root调用此函数,写入的XML文件格式整齐美观:

复制代码 代码如下:

indent(root)
book.write(xmlfile,'utf-8')

复制代码 代码如下:

## Get pretty look
def indent( elem, level=0):
    i = "\n" + level*"  "
    if len(elem):
        if not elem.text or not elem.text.strip():
            elem.text = i + "  "
        for e in elem:
            indent(e, level+1)
        if not e.tail or not e.tail.strip():
            e.tail = i
    if level and (not elem.tail or not elem.tail.strip()):
        elem.tail = i
    return elem

相关文章

pytorch构建多模型实例

pytorch构建双模型 第一部分:构建"se_resnet152","DPN92()"双模型 import numpy as np from functools import pa...

Python datetime时间格式化去掉前导0

Python时间格式化的时候,去掉前导0的: dt = datetime.now() print dt.strftime('%-H') #结果是: '4' 在format s...

Python 忽略warning的输出方法

有时候运行代码时会有很多warning输出,如提醒新版本之类的,如果不想这些乱糟糟的输出可以这样: import warnings warnings.filterwarnings(...

详细讲解Python中的文件I/O操作

详细讲解Python中的文件I/O操作

 本章将覆盖所有在Python中使用的基本I/O功能。有关更多函数,请参考标准Python文档。 打印到屏幕上: 产生输出最简单的方法是使用print语句,可以通过用逗号分隔的...

Python 两个列表的差集、并集和交集实现代码

Python 两个列表的差集、并集和交集实现代码

①差集 方法一: if __name__ == '__main__': a_list = [{'a' : 1}, {'b' : 2}, {'c' : 3}, {'d' : 4},...