【Python】etree方法生成,解析xml
#练习:另一种遍历xml文件的方式etree,xpath
import sys
try:
import xml.etree.cElementTree as ET #前面带c的都是比较快的,效率高且不占内存的,优先使用这个
except ImportError:
import xml.etree.ElementTree as ET
tree = ET.ElementTree(file='e:\\movie.xml')
root=tree.getroot()
print root.tag #打印根tag
print root.attrib #打印属性
for child_of_root in root:
print child_of_root.tag
print "********", child_of_root.attrib
print "*"*50
print root[0].tag
print root[0].text #“打印的内容为一个回车”
print root[0][0].tag
print root[0][0].text
print root[0][1].tag
print root[0][1].text
print "*"*50
for elem in tree.iter(): #递归遍历所有子元素
print elem.tag, elem.text, elem.attrib #属性返回的是一个字典
print "*"*50
for elem in tree.iterfind('movie/type'): #查找movie下一级节点中的所有type标签
print elem.tag, elem.text,elem.attrib
print "*"*50
for elem in tree.iter(tag='stars'): #在整个树中查找标签为star的元素
print elem.tag, elem.text,elem.attrib
print "*"*50
for elem in tree.iterfind('*[@title="Ishtar"]'): #在下一级节点查找属性为title="Ishtar"的元素
print elem.tag, elem.text,elem.attrib
print "*"*50
for elem in tree.iterfind('movie[@title="Ishtar"]'): #查找属性为title="Ishtar"的元素
print elem.tag, elem.attrib
print "*"*50
root = tree.getroot() #获取第一级movie元素
print "first movie:",root[0].tag #打印第一级movie元素的标签,为movie
print "subnode:",root[0][0].tag #打印第一级movie元素下的第一个子元素标签type
print "subnode:",root[0][1].tag #打印第一级movie元素下的第二个子元素标签format
print "subnode:",root[0][2].tag #打印第一级movie元素下的第三个子元素标签year
print "subnode:",root[0][3].tag #打印第一级movie元素下的第四个子元素标签rating
print "subnode:",root[0][4].tag #打印第一级movie元素下的第五个子元素标签stars
print "subnode:",root[0][5].tag #打印第一级movie元素下的第五个子元素标签description
print "*"*50
del root[0][4] #删除第一级movie元素下的第四个子元素
del root[0][3] #删除第一级movie元素下的第三个子元素
del root[0][2] #删除第一级movie元素下的第二个子元素
del root[0][1] #删除第一级movie元素下的第一个子元素
del root[3] #删除第四个movie元素
del root[2] #删除第三个movie元素
print "*"*50
for subelem in root:
print subelem.tag, subelem.attrib #打印第一个movie和第二个movie元素的标签和属性
print "*"*50
print tree.write(sys.stdout) #将xml文件的内容写到屏幕上
tree.write("e:\\movie.xml") #将变更的xml文件写入到文件中
#练习:生成xml
import sys
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
a = ET.Element('elem') #生成一个节点elem,没有文本节点
c = ET.SubElement(a, 'child1') #生成一个字节点下的子节点child1
c.text = "some text" #在子节点上添加文本节点
d = ET.SubElement(a, 'child2') #生成一个字节点下的子节点child2
b = ET.Element('elem_b') #生成一个节点elem_b,没有文本节点
root = ET.Element('root') #生成一个节点root
root.extend((a, b)) #将a、b两个变量存储的节点elem和elem1添加到root节点下
tree = ET.ElementTree(root) #生成节点树
root[0].set('foo', 'bar') #设定第一个子元素的属性foo,值为bar
tree.write(sys.stdout) #打印节点树
tree.write("d:\\test.xml") #将xml文件内容写入到文本文件中
【Python】etree方法生成,解析xml的更多相关文章
- Dom方法,解析XML文件
Dom方法,解析XML文件的基本操作 package com.demo.xml.jaxp; import java.io.IOException; import javax.xml.parsers.D ...
- java生成解析xml的另外两种方法Xstream
Xstream生成和解析xm和JAXB生成和解析xml的方法. 一,Xstream Xstream非jdk自带的,需要到入Xstream-1.4.3.jar和xpp3_min-1.1.4.jar 1. ...
- Python中使用ElementTree解析xml
在Python中,ElementTree是我们常用的一个解析XML的模块 1.导入ElementTree模块 from xml.etree import ElementTree as ET 2.初始化 ...
- 【Android】使用Pull生成/解析XML文件
一.生成XML文件,即是将对象集合转为XML文件存储. 对象集合 –> XML(序列化) Android中使用android.util.Xml类对其进行了描述,提供相应的API. 步骤大致如下: ...
- Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件,封装函数
总结了一下使用Python对xml文件的解析,用到的模块儿如下: 分别从xml字符串和xml文件转换为xml对象,然后解析xml内容,查询指定信息字段. from xml.dom.minidom im ...
- python开发_xml.dom_解析XML文档_完整版_博主推荐
在阅读之前,你需要了解一些xml.dom的一些理论知识,在这里你可以对xml.dom有一定的了解,如果你阅读完之后. 下面是我做的demo 运行效果: 解析的XML文件位置:c:\\test\\hon ...
- java生成解析xml的另外两种方法JAXB
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反 ...
- Python—使用xm.dom解析xml文件
什么是DOM? 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口. 一个 DOM 的解析器在解析一个 XML 文档时,一次性读 ...
- Python sax模块(SAX解析XML)
XML样例: <?xml version="1.0"?> <collection shelf="New Arrivals"> <m ...
随机推荐
- Vue为v-html中标签添加CSS样式
在最近的vue项目中遇到的问题:v-html渲染的富文本,无法在样式表中修改样式: <template> <div class="msgHtmlBox" v-ht ...
- JAVA常识1
DBA: https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86% ...
- 登录验证码实现(Captcha)
登录验证码 登录验证是一般系统都会有的功能,验证的方式也多种多样,比如输入式验证码,拖动式验证条,拖动式验证拼图等等. 我们这里先实现常规的输入验证码的方式,右边显示验证码图片,点击可刷新,左边输入验 ...
- Annotation方式配置AOP
package com.xk.spring.kp04_aop.aop.s02_annotation; public interface IStudentService { public void sa ...
- django搭建博客
https://andrew-liu.gitbooks.io/django-blog/content/index.html
- day039 数据库索引
今日内容: 1.为什么要有索引 简而言之,索引出现的意义是为了更方便,更快速的查询数据. 什么是索引 索引在mysql中也叫''键''或'key'(primary key unique key,ind ...
- redis、memcached、mongoDB 对比
Mongodb和Memcached不是一个范畴内的东西.Mongodb是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据.Mongodb 和 Memcached不存在谁替换谁的问题. ...
- SQL-26 (二次分组)汇总各个部门当前员工的title类型的分配数目,结果给出部门编号dept_no、dept_name、其当前员工所有的title以及该类型title对应的数目count
题目描述 汇总各个部门当前员工的title类型的分配数目,结果给出部门编号dept_no.dept_name.其当前员工所有的title以及该类型title对应的数目countCREATE TABLE ...
- linux 常用重启
sudo reboot 为最常用重启 Linux centos关机与重启命令详解与实战 Linux centos重启命令: 1.reboot 普通重启 2.shutdown -r now 立刻重启(r ...
- 特殊权限set_uid
set_uid:该权限针对二进制可执行文件,使文件执行阶段具有文件所有者的权限.比如passwd这个命令就具有该权限.当普通用户执行passwd命令时,可以临时获得root权限,从而可以更改密码. 作 ...