Python中使用ElementTree解析xml
在Python中,ElementTree是我们常用的一个解析XML的模块
1.导入ElementTree模块
from xml.etree import ElementTree as ET
2.初始化一个ElementTree类。初始化ElementTree类常用两种方式:一种通过xml文件,一种通过字符串。
#通过xml文件初始化,test.xml是根文件夹的一个xml文件
myET=ET.parse("test.xml")
#通过字符串初始化
xml="<xml><name>张三</name><age>21</age></xml>"
myET=ET.XML(xml)
3.查找对象
getchildren()方法会返回根节点包含的所有子节点,返回类型为ElementTree列表
find(match)方法可以根据节点名称来寻找节点内容
print myET.getchildren()[0].text
print myET.find("name").text
两行代码输出的结果都是 张三
4.添加子节点
通过append方法添加子节点
sexET=ET.XML("<sex>男</sex>")
myET.append(sexET)
5.删除子节点
通过remove方法删除子节点
ageET=myET.find("age")
myET.remove(ageET)
6.修改内容
#修改内容
myET.find("name").text="李四"
#修改标签
myET.find("name").tag="person"
7.转换成字符串
tostring()方法可以将ElementTree对象转换成字符串
第一个参数是ElementTree对象,第二个参数是编码方式,可以缺省
ET.tostring(myET,"utf-8")
ElementTree其他方法或属性:
- tag
- A string identifying what kind of data this element represents (the element type, in other words).
- text
- The text attribute can be used to hold additional data associated with the element. As the name implies this attribute is usually a string but may be any application-specific object. If the element is created from an XML file the attribute will contain any text found between the element tags.
- tail
- The tail attribute can be used to hold additional data associated with the element. This attribute is usually a string but may be any application-specific object. If the element is created from an XML file the attribute will contain any text found after the element’s end tag and before the next tag.
- attrib
- A dictionary containing the element’s attributes. Note that while the attrib value is always a real mutable Python dictionary, an ElementTree implementation may choose to use another internal representation, and create the dictionary only if someone asks for it. To take advantage of such implementations, use the dictionary methods below whenever possible.
The following dictionary-like methods work on the element attributes.
- clear()
- Resets an element. This function removes all subelements, clears all attributes, and sets the text and tail attributes to None.
- get(key,default=None)
-
Gets the element attribute named key.
Returns the attribute value, or default if the attribute was not found.
- items()
- Returns the element attributes as a sequence of (name, value) pairs. The attributes are returned in an arbitrary order.
- keys()
- Returns the elements attribute names as a list. The names are returned in an arbitrary order.
- set(key,value)
- Set the attribute key on the element to value.
The following methods work on the element’s children (subelements).
- append(subelement)
- Adds the element subelement to the end of this elements internal list of subelements.
- extend(subelements)
-
Appends subelements from a sequence object with zero or more elements. RaisesAssertionError if a subelement is not a valid object.
New in version 2.7.
- find(match)
- Finds the first subelement matching match. match may be a tag name or path. Returns an element instance orNone.
- findall(match)
- Finds all matching subelements, by tag name or path. Returns a list containing all matching elements in document order.
- findtext(match,default=None)
- Finds text for the first subelement matching match. match may be a tag name or path. Returns the text content of the first matching element, ordefault if no element was found. Note that if the matching element has no text content an empty string is returned.
- getchildren()
-
Deprecated since version 2.7:Uselist(elem) or iteration.
- getiterator(tag=None)
-
Deprecated since version 2.7:Use methodElement.iter() instead.
- insert(index,element)
- Inserts a subelement at the given position in this element.
- iter(tag=None)
- Creates a tree iterator with the current element as the root. The iterator iterates over this element and all elements below it, in document (depth first) order. If tag is not None or '*', only elements whose tag equals tag are returned from the iterator. If the tree structure is modified during iteration, the result is undefined.
- iterfind(match)
-
Finds all matching subelements, by tag name or path. Returns an iterable yielding all matching elements in document order.
New in version 2.7.
- itertext()
-
Creates a text iterator. The iterator loops over this element and all subelements, in document order, and returns all inner text.
New in version 2.7.
- makeelement(tag,attrib)
- Creates a new element object of the same type as this element. Do not call this method, use theSubElement() factory function instead.
- remove(subelement)
- Removes subelement from the element. Unlike the find* methods this method compares elements based on the instance identity, not on tag value or contents.
参考:http://www.cnblogs.com/ifantastic/archive/2013/04/12/3017110.html
http://docs.python.org/2/library/xml.etree.elementtree.html
Python中使用ElementTree解析xml的更多相关文章
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- 转:在java中使用dom4j解析xml
JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...
- julia与python中的列表解析.jl
julia与python中的列表解析.jl #=julia与python中的列表解析.jl 2016年3月16日 07:30:47 codegay julia是一门很年轻的科学计算语言 julia文档 ...
- Python中的列表解析和生成器表达式
Python中的列表解析和生成器表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.列表解析案例 #!/usr/bin/env python #_*_coding:utf-8 ...
- 第14.12节 Python中使用BeautifulSoup解析http报文:使用select方法快速定位内容
一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>和<第14.11节 Python中使用BeautifulSo ...
- 第14.11节 Python中使用BeautifulSoup解析http报文:使用查找方法快速定位内容
一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>介绍了BeautifulSoup对象的主要属性,通过这些属性可以访 ...
- [python]使用ElementTree解析XML【译】
19.7 The ElementTree XML API 源码:Lib/xml/etree/ElementTree.py Element类型是一个灵活的容器对象,设计出来是用于存储有层次的数据结构到内 ...
- python XML文件解析:用ElementTree解析XML
Python标准库中,提供了ET的两种实现.一个是纯Python实现的xml.etree.ElementTree,另一个是速度更快的C语言实现xml.etree.cElementTree.请记住始终使 ...
- ZH奶酪:Python使用ElementTree解析XML【译】
19.7. xml.etree.ElementTree — The ElementTree XML API 源代码: Lib/xml/etree/ElementTree.py Element类型是一种 ...
随机推荐
- [Effective C++ --007]为多态基类声明virtual析构函数
引言: 我们都知道类的一个很明显的特性是多态,比如我们声明一个水果的基类: class Fruit { public: Fruit() {}; ~Fruit(){}; } 那么我们根据这个Fruit基 ...
- dd,实现系统备份
一.dd的使用 dd命令的解释dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾则乘以相应的数字:b=512:c=1:k=1024:w=2 参数: ...
- php安装ecshop
1.apache2.2正常 2.源码htdoc下面保存不动 3.E:\PHP 安装目录下 php5.3.28 就不支持jpeg php5.2.17 就不支持 mysql 说明就是php的问题,因为其他 ...
- Javascript之基本包装类型
一.基本包装类型概述 var box = 'Mr. Lee';//定义一个字符串 var box2 = box.substring(2);//截掉字符串前两位 alert(box2);//输出新字符串 ...
- 深入理解计算机系统第二版习题解答CSAPP 2.15
只使用位级运算和逻辑运算,编写一个C表达式,它等价于x==y.换句话说,当x和y相等时它将返回1,否则就返回0. !(x ^ y)
- Android 自学之基本界面组件(上)
文本款(TextView)和编辑框(EditText)的功能和用法 TextView直接继承了View,他还是EditText.Button两个UI组件的父类,TextView的作用就是在界面上显示文 ...
- CentOS 6 下安装Python 3
可以下载各个版本的python:https://www.python.org/ftp/python/ 配置安装 下载最新的安装包(截止2013/11/05),还是3.3.2版本. #wget http ...
- Cadence PCB层的概念
Slikscreen_Top :顶层丝印层 Assemly_Top :装配层,就是元器件含铜部分的实际大小,用来产生元器件的装配图.我自己感觉这一层如果对于贴片的元器件,如电容,就是两个贴片铜 ...
- (转)C#创建windows服务
原文地址:http://blog.itpub.net/23109131/viewspace-688117/ 第一步:创建服务框架 创建一个新的 Windows 服务项目,可以从Visual C# 工程 ...
- 【linux操作命令】mysql
1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mys ...