Python模块知识7:XML

原创 2018年01月01日 00:00:00


XML是实现不同语言或程序之间进行数据交换的协议;

通常浏览器返回的字符串有三种格式:

1、HTML

2、Json

3、XML

其中,XML可以在页面上做展示,可以作为程序的配置文件(获取字符串类型的XML格式数据)

xml的特点:以<>开始和结尾,包含根节点、子节点;


每一个节点都是element对象,节点下可以嵌套节点,element对象下可以获得各个方法。比如:tag(节点名称)、attib(属性)、text(内容)、makeelement(创建一个新节点)、append(追加一个子节点)等


如下所示的xml文件:

640?wx_fmt=png&wxfrom=5&wx_lazy=1

案例1:找根节点:

from xml.etree import ElementTree as ET
tree=ET.parse('hh.xml')
root=tree.getroot()#获取xml的根节点
print('根节点',root) #但因根节点,类型均为element;
print('根节点的名称',root.tag)#获取根节点名字,
print('根节点的属性',root.attrib)#获取根节点名字,

效果:

0?wx_fmt=png

案例2:找二级、三级等节点

from xml.etree import ElementTree as ET
tree=ET.parse('hh.xml')
root=tree.getroot()#获取xml的根节点
for i in root:
print('二级节点名称',i.tag,'二级节点属性',i.attrib)
for gradechild in i:
print('3级节点名称:',gradechild.tag,'3级节点内容:',gradechild.text)

效果:

0?wx_fmt=png

解析XML的两种方式:

1、解释字符串,无ElementTree,自己打开文件拿到,或者发送request模块拿到返回值

将字符串解析为xml

from xml.etree import ElementTree as ET
# 打开文件,读取XML内容
str_xml = open('xo.xml', 'r').read()
# 将字符串解析成xml特殊对象,root代指xml文件的根节点
root = ET.XML(str_xml)

2、解析文件,会有用ElementTree,两个步骤拿到Element,将文件解析为xml;ElementTree可以写入东西

from xml.etree import ElementTree as ET
# 直接解析xml文件
tree = ET.parse("xo.xml")
# 获取xml文件的根节点
root = tree.getroot()

案例3:修改xml,用字符方式读取的;

#以字符串导入
from xml.etree import  ElementTree as ET
str_xml=open('hh.xml','r').read()
root=ET.XML(str_xml)
print(root.tag)#拿到所以的根节点
#循环所有的year节点
for i in root.iter('year'):
#将year内容自增1
   
new_year=int(i.text)+1
   
i.text=str(new_year)
#设置属性
   
i.set('name',"hx")
i.set('age','18')
#删除属性
   # del i.attrib['name']
#操作完了,需要保存,要用到ElementTree
tree=ET.ElementTree(root)
tree.write('hhnew',encoding='utf-8')#如果用文件方式解析,则可以直接用此句

执行结果:新增一个文件hhnew,内容如下:已修改所有内容

0?wx_fmt=png

案例4:在Element基础上新增一个节点,可以写上内容

#在element的基础上新增一个节点,并写入内容
from xml.etree import  ElementTree as ET
tree=ET.parse('hh.xml')
root=tree.getroot()
ele=ET.Element("hh",{'k1':'b1'})#创建element对象
ele.text="写入新的内容"
root.append(ele)#append
tree.write('hh_new2',encoding='utf-8')#写入新的文件

执行结果:会新增如下一句话

0?wx_fmt=png

案例5:创建一个XML

#创建一个新的xml
from xml.etree import  ElementTree as ET
from xml.dom import minidom
def prettify(ele):#将所有的节点转换成字符串,并添加缩进
 
rough_string=ET.tostring(ele,'utf-8')
str=minidom.parseString(rough_string)
return str.toprettyxml(indent="\t")#添加缩进

#创建根节点
root=ET.Element('famliy')

#创建节点的大儿子
son1=ET.Element('son',{'name':'儿子1'})
#创建节点的小儿子
son2=ET.Element('son',{'name':'儿子2'})

#在大儿子下创建两个孙子
grandson1=ET.Element('grandson',{'name':'儿子1孙子1'})
grandson1.text='孙子1的节点内容'
grandson2=ET.Element('grandson',{'name':'儿子1孙子2'})
grandson2.text='孙子2的节点内容'
#把孙节点更新到儿节点
son1.append(grandson1)
son1.append(grandson2)
#把儿节点更新到根节点
root.append(son1)
root.append(son2)

raw_str=prettify(root)#缩进
#用打开文件方式写入
f=open('hhnew3','w',encoding='utf-8')
f.write(raw_str)
f.close()

执行结果:

0?wx_fmt=png

版权声明:本文为博主原创文章,未经博主允许不得转载。

xml模块操作 python

xml version="1.0" encoding="UTF-8" ?> users> user id="1000001"> username>Adminusername> ...
  • Chenzhoiku
  • Chenzhoiku
  • 2017年03月08日 09:24
  • 413

python解析xml模块

1 2 第一种方式,自动遍历所有节点: #!/usr/bin/env python # -*- coding: utf-8 -*- from xml.sax.handler imp...
  • five3
  • five3
  • 2011年12月12日 21:52
  • 17415

使用Python+XML添加自定义模块

1、编写Python文件 2、编写XML文件 3、添加Python环境变量 4、将编写好的Python文件和XML文件拷贝到环境变量指定的目录 5、打开图形界面就可以使用了,或者是在Python中im...
  • yuan1164345228
  • yuan1164345228
  • 2016年03月20日 16:42
  • 688

Python 使用 ElementTree 模块来处理 XML

最近使用 Python 来发送 SOAP 请求以测试 Web Service 的性能,由于 SOAP 是基于 XML 的,故免不了需要使用 Python 来处理 XML 数据。在对比了几种方案后,最后...
  • lihao21
  • lihao21
  • 2017年06月06日 23:33
  • 1463

centos 7 下的python psutil模块

psutil(process and system utilities) 我的python版本是2.7.5 python中的psutil模块是系统性能信息模块 接下来我来介绍如何在centos7...
  • u013246898
  • u013246898
  • 2016年07月19日 21:23
  • 710

python使用elementtree模块解析xml

import elementtree.ElementTree as etree #从字符串中获取 root = etree.fromstring(xmlstr) #从xml文件流读入 #遍历roo...
  • codingkid
  • codingkid
  • 2011年07月10日 22:04
  • 2599

python的random模块的几个实用函数

1. randrange(a,b,step) 从a到b的以step为间隔的序列中随机选出一个整数 This fixes the problem with randint() which inc...
  • qq_25974431
  • qq_25974431
  • 2018年01月10日 22:02
  • 30

python windows下安装模块(defusedxml为例)

windows下安装python的第三方模块,下面以defusedxml模块为例: 官方下载地址:https://pypi.python.org/pypi/defusedxml/#downloads...
  • drdairen
  • drdairen
  • 2016年03月17日 21:44
  • 774

Python模块知识1:模块知识介绍

模块是代码的归类,能定义函数、类和变量,把相关的代码分配到一个模块里,能让你的代码更好用,更易懂、也更简洁。模块在java中叫做类库。    模块的存在方式:    模块可以是单个.py文件,也可以是...
  • PbGc396Dwxjb77F2je
  • PbGc396Dwxjb77F2je
  • 2018年01月01日 00:00
  • 3033

Python 利用 XSD 文件,解析 XML 文件

参考:http://blog.csdn.net/nohackcc/article/details/9770593   1. 用 generateDS 解析 XSD 文件,生成相应的 Python ...
  • hchaoh
  • hchaoh
  • 2017年04月06日 15:49
  • 794
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python模块知识7:XML
举报原因:
原因补充:

(最多只允许输入30个字)