【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 ...
随机推荐
- 八、持久层框架(MyBatis)
一.基于MyBatis的CRUD 1.首先是配置文件Category.xml修改 一次性修改配置文件Category.xml,提供CRUD对应的sql语句. <?xml version=&quo ...
- Linux基线合规检查中各文件的作用及配置脚本
1./etc/motd 操作:echo " Authorized users only. All activity may be monitored and reported " ...
- git通过diff文件,合并未上传代码库代码
今天有段代码需要从别人的机器上同步到本地,但是这段代码还没上库,所以要么将这部分代码打包传过来,或者,用下面的办法. 由于代码修改涉及多个文件,打包搞过来确实比较麻烦,在网上找了下,发现可以用git ...
- 针对unicode对象---检测字符串是否只由数字组成
- 把旧系统迁移到.Net Core 2.0 日记 (15) --Session 改用Redis
安装Microsoft.Extensions.Caching.Redis.Core NuGet中搜索Microsoft.Extensions.Caching.Redis.Core并安装,此NuGet包 ...
- zabbix3.4.7安装在centos 7.4上
Centos 7.4 安装Zabbix 3.4 一.安装环境 1 [root@juny-18 ~]# cat /etc/redhat-release 2 3 CentOS Linux release ...
- 微信公众号 access_token 没有过期 却失效
最近在开发微信项目的时候 access_token 缓存到 redis里面的,明明在两个小时的有效期内 微信却提示 "errcode":40001,"errmsg& ...
- Linux下IP的存储位置
在linux下,配置多个IP的话,通常是eth0... eth0. ..eth0.x等等, 那么如果要配置大量的IP呢,这么配置也是可以的,但是繁琐,虽说这种情况很少. 对于添加大量IP,有一定规定的 ...
- npm webpack vue-cli
npm.webpack.vue-cli 快速上手版 Node.js npm 什么是Node.js 以及npm 简单的来说 Node.js 就是运行在服务端的JavaScript,基于Chro ...
- java编写本月日历
代码如下: import java.time.*; public class Main { public static void main(String arg[]){ LocalDate date ...