19.7.1 教程

这是一个简短的教程使用xml.etree.ElementTree(简称为et)。目标是展示一些构建模块和模块的基本概念

9.7.1.1. XML tree and elements

XML是一种固有的层次化的数据格式,最自然的方式来表示这是树。为此ET有两个方法——ElementTree代表整个XML文档树,Element表示这个树中的一个节点。与整个文档交互(阅读和写作/文件)通常是在ElementTree水平。与一个XML元素及其子元素是元素级别上完成的。

9.7.1.2

xml文件,保存到本地test.xml

<?xml version="1.0" encoding="utf-8"?>
<request>
<functionID>subPackageInfo</functionID>
<time>2014-02-10 15:10:50</time>
<packageList>
<packageInfo>
<orderId id=''>22088317130</orderId>
<expressName id=''>ems</expressName>
<expressTel>01</expressTel>
<expressNo>0001</expressNo>
<productId>1001173023</productId>
<allotQuatity>5</allotQuatity>
<outOfStockQuatity>0</outOfStockQuatity>
<promotionID></promotionID>
</packageInfo> <packageInfo>
<orderId id=''>22088317130</orderId>
<expressName id=''>23</expressName>
<expressTel>010-55675233</expressTel>
<expressNo>0002</expressNo>
<productId>1001173123</productId>
<allotQuatity>5</allotQuatity>
<outOfStockQuatity>0</outOfStockQuatity>
<promotionID>-1</promotionID>
</packageInfo> <packageInfo>
<orderId>22088317130</orderId>
<expressName>EMS</expressName>
<expressTel>010-55675233</expressTel>
<expressNo>0003</expressNo>
<productId>1001173223</productId>
<allotQuatity>0</allotQuatity>
<outOfStockQuatity>5</outOfStockQuatity>
<promotionID>-1</promotionID>
</packageInfo> </packageList>
</request>

解析xml文件

from xml.etree import ElementTree
tree=ElementTree.parse('test.xml')
#tree= ET.fromstring(country_data_as_string) #fromstring解释字符串,即country_data_as_string为读取xml的字符串
getroot()返回树结构的根元素
get 获取元素的标签
>>> root=tree.getroot()
>>> root.tag
'request'

find和findall,如果参数是元素名称的话只能查找当前节点的下一层节点,用法下面再介绍

list=root.find('packageList')
infos=list.findall('packageInfo')

查找packageInfo下面的orderId节点的文本

>>> for i in infos:
print i.find('orderId').text 22088317130
22088317130
22088317130

find()

1.root.find('packageList')
只匹配root节点下最上层元素,不匹配嵌入另一个元素的元素类型packageList
2.root.find('packageList/packageInfo')直接找到packageInfo节点
3.a=root.findall('*/packageInfo')
>>> for i in a:print i.tag packageInfo
packageInfo
packageInfo
4.我称为xpath方法
a=root.findall('.//orderId')
>>> for i in a:print i.text 22088317130
22088317130
22088317130
>>> a=root.findall('.//orderId[@id="9001"]')
>>> a[0].text
''

python xml包 xml.etree.ElementTree使用记录的更多相关文章

  1. python 解析xml遇到xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 4, column 34

    在调试数字驱动用xml文件的方式时,包含读取xml文件的步骤,运行程序报错: d:\test\0629>python XmlUtil.pyTraceback (most recent call ...

  2. Python中xml.etree.ElementTree读写xml文件实例

    import osimport xml.etree.ElementTree as ET'''Python 标准库中,提供了6种可以用于处理XML的包,本文举实例说明第6种1.xml.dom2.xml. ...

  3. python标准库xml.etree.ElementTree的bug

    使用python生成或者解析xml的方法用的最多的可能就数python标准库xml.etree.ElementTree和lxml了,在某些环境下使用xml.etree.ElementTree更方便一些 ...

  4. python模块:xml.etree.ElementTree

    """Lightweight XML support for Python. XML is an inherently hierarchical data format, ...

  5. python xml.etree.ElementTree模块

    使用的XML文件如下:file.xml <?xml version="1.0"?> <data name="ming"> <cou ...

  6. Python 标准库之 xml.etree.ElementTree

    Python 标准库之 xml.etree.ElementTree Python中有多种xml处理API,常用的有xml.dom.*模块.xml.sax.*模块.xml.parser.expat模块和 ...

  7. python解析xml文件之xml.etree.cElementTree和xml.etree.ElementTree区别和基本使用

    1.解析速度:ElementTree在 Python 标准库中有两种实现.一种是纯 Python 实现例如 xml.etree.ElementTree ,另外一种是速度快一点的 xml.etree.c ...

  8. [python 学习] 使用 xml.etree.ElementTree 模块处理 XML

    ---恢复内容开始--- 导入数据(读文件和读字符串) 本地文件 country_data.xml <?xml version="1.0"?> <data> ...

  9. python 之xml.etree.ElementTree

    Element类型是一种灵活的容器对象,用于在内存中存储结构化数据. [注意]xml.etree.ElementTree模块在应对恶意结构数据时显得并不安全. 每个element对象都具有以下属性: ...

随机推荐

  1. 九度OJ 1193:矩阵转置 (矩阵计算)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1673 解决:1132 题目描述: 输入一个N*N的矩阵,将其转置后输出.要求:不得使用任何数组(就地逆置). 输入: 输入的第一行包括一个 ...

  2. linux下查找指定时间内修改过的或新建的文件

    1.简单命令 # find -type f \( -newermt '2017-04-19 00:00' -a -not -newermt '2017-04-27 23:59' \) 2.简单实现(参 ...

  3. php本周、本月的第一天 / 最后一天的时间

    //week $time1 = mktime(0, 0, 0, date("m"), date("d") - date("w") + 1, ...

  4. 7 Javascript:表单与验证-非空验证

    表单提交前要检查数据的合法性 在要对表单里的数据进行验证的时候,能够利用getElementById()来訪问网页上不论什么一个元素 每一个表单域都有一个form对象,可被传给不论什么验证表单数据的函 ...

  5. Cocos2d-x 3.1 环境搭建和创建project

    Cocos2d-x 3.x改版了非常多,之前搭过一次环境,可是没截图.这次趁着重装电脑,一边搭建一边截图.此博文仅仅是为了记录而不是为了教学,所以很多其它讲的是搭建过程.本文基本上參考这篇博客:htt ...

  6. LDA中的先验知识

    LDA涉及到的先验知识有:二项分布.Gamma函数.Beta分布.多项分布.Dirichlet分布.马尔科夫链.MCMC.Gibbs Sampling.EM算法等. 二项分布 二项分布是N重伯努利分布 ...

  7. [转载]设计模式的UML图

    1.抽象工厂(Abstract Factory)模式 意图:为特定的客户(或情况)提供特定系列的对象. 2.类的适配器(Adapter)模式 意图:将一个类的接口转换成客户希望的另外一个接口. 3.对 ...

  8. 改善程序与设计的55个具体做法 day8

    条款20:宁以pass-by-reference-to-const 替换 pass-by-value 即 以const引用 替换值传递. 采用引用传递参数时,底层往往是用指针方式实现,因此参数传递内置 ...

  9. 牛客小白月赛1 H 写真がとどいています 【循环】

    题目链接 https://www.nowcoder.com/acm/contest/85/H 思路 如果熟悉 五线谱 才能做啊... 然后 先竖着遍历 再 横着 遍历 就可以了 AC代码 #inclu ...

  10. JSP页面EL表达式不解析

    问题是这样:在搭建springMVC环境的时候,笔者写了一个简单的Controller如下: @Controller public class HelloController { @RequestMa ...