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

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

(0)

相关推荐

  • Python利用ElementTree模块处理XML的方法详解

    前言 最近因为工作的需要,在使用 Python 来发送 SOAP 请求以测试 Web Service 的性能,由于 SOAP 是基于 XML 的,故免不了需要使用 python 来处理 XML 数据.在对比了几种方案后,最后选定使用 xml.etree.ElementTree 模块来实现. 这篇文章记录了使用 xml.etree.ElementTree 模块常用的几个操作,也算是总结一下,免得以后忘记了.分享出来也方法需要的朋友们参考学习,下面话不多说了,来一起看看详细的介绍吧. 概述 对比其他

  • python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)

    xml.dom篇 DOM是Document Object Model的简称,XML 文档的高级树型表示.该模型并非只针对 Python,而是一种普通XML 模型.Python 的 DOM 包是基于 SAX 构建的,并且包括在 Python 2.0 的标准 XML 支持里. 一.xml.dom的简单介绍 1.主要方法: minidom.parse(filename):加载读取XML文件doc.documentElement:获取XML文档对象node.getAttribute(AttributeN

  • Python中使用ElementTree解析XML示例

    [XML基本概念介绍] XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. 概念一: 复制代码 代码如下: <foo>      # foo元素的起始标签  </foo>     # foo元素的结束标签             # note: 每一个起始标签必须有对应的结束标签来闭合, 也可以写成<foo/> 概念二: 复制代码 代码如下: <foo>           # 元素可以嵌套

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

    1.引入库需要用到3个类,ElementTree,Element以及建立子类的包装类SubElement from xml.etree.ElementTree import ElementTreefrom xml.etree.ElementTree import Elementfrom xml.etree.ElementTree import SubElement as SE 2.读入并解析tree = ElementTree(file=xmlfile)root = tree.getroot()

  • python通过ElementTree操作XML

    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.getr

  • python 通过xml获取测试节点和属性的实例

    写在前面:通过xml获取测试数据,主要是为了使数据参数化.测试脚本和测试数据分离,使得脚本清晰容易维护,方便排查问题. XML:可扩展的标记语言,是一种用于标记电子文件使其具有结构行的标记语言. 自动化测试中的使用场景: 1. 经常变动的测试数据: 2. 数据量大,不方便放在脚本中: 3. 数据作用于多个地方: 4. 相同测试用例,可以使用不同的数据: 5. 例:不稳定,后续改动较多功能:容易出错的功能 XML特征 • 具有自我描述性,本身不做任何事情 • 声明部分 <?xml version=

  • Python实现的读取/更改/写入xml文件操作示例

    本文实例讲述了Python实现的读取/更改/写入xml文件操作.分享给大家供大家参考,具体如下: 原始文档内容(test.xml): <?xml version="1.0" encoding="UTF-8"?> <framework> <processers> <processer name="AProcesser" file="lib64/A.so" path="/tmp&

  • Python使用ElementTree美化XML格式的操作

    Python中使用ElementTree可以很方便的处理XML,但是产生的XML文件内容会合并在一行,难以看清楚. 如下格式: <root><aa>aatext<cc>cctext</cc></aa><bb>bbtext<dd>ddtext<ee>eetext</ee></dd></bb></root> 使用minidom模块中的toprettyxml和write

  • Python基于dom操作xml数据的方法示例

    本文实例讲述了Python基于dom操作xml数据的方法.分享给大家供大家参考,具体如下: 1.xml的内容为del.xml,如下 <?xml version="1.0" encoding="utf-8"?> <catalog> <maxid>4</maxid> <login username="pytest" passwd='123456'> <caption>Python

  • 使用python操作lmdb对数据读取的实例

    由于c++速度快,所以一般写入数据我调用c++借口,而读取数据使用c++也行,但有时候Python在某方面方便,所以通过使用python借口仅仅对lmdb文件读取,处理数据是图片 import lmdb import numpy as np import cv2 lmdb_file = "/home/rui/demo" lmdb_env = lmdb.open(lmdb_file) lmdb_txn = lmdb_env.begin() lmdb_cursor = lmdb_txn.c

  • Python进程,多进程,获取进程id,给子进程传递参数操作示例

    本文实例讲述了Python进程,多进程,获取进程id,给子进程传递参数操作.分享给大家供大家参考,具体如下: 线程与线程之间共享全局变量,进程之间不能共享全局变量. 进程与进程相互独立  (可以通过socket套接字实现进程间通信,可以通过硬盘(文件)实现进程通信,也可以通过队列(Queue)实现进程通信) 子进程会拷贝复制主进程中的所有资源(变量.函数定义等),所以子进程比子线程耗费资源. demo.py(多进程): import threading # 线程 import time impo

  • Python列表常见操作详解(获取,增加,删除,修改,排序等)

    本文实例讲述了Python列表常见操作.分享给大家供大家参考,具体如下: 列表是由一系列按特定顺序排列的元素组成的对象.因为列表通常包含多个元素, 所以建议给列表指定一个表示复数的名称. 我们用方括号( [] ) 来表示列表, 并用逗号来分隔其中的元素. types=['娱乐','体育','科技'] print(types) 运行结果: ['娱乐', '体育', '科技'] 可以看到,打印列表的同时,也会将方括号打印出来. 1 获取元素 要获取列表中的某个元素, 在方括号内指定元素的索引即可:

随机推荐