Python Xml 模块的应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/q627794135/article/details/82025744

Python Xml 模块应用

xml为python自带的模块,不需要额外的安装。

一:读取XML

ElementTree 表现的是整个xml的树型结构,可以用于初始化一棵树出来用来生成一个新的xml文件,也可以以树的形式来加载一个已有的xml文件

	from xml.etree import ElementTree as ET		# 导入xml模块

1.# 从文件读取
  tree = ET.parse('xmltest.xml')		# 读取.xml文件
  root = tree.getroot()							# 获取根节点,可用列表切片的方法读取节点

2.# 读取xml格式的字符串
  xmls = r"<Request lang='zh-CN'><Head>YCY</Head></Request>"
  root = ET.fromstring(xmls)				# 获取根节点

读取文件 和 读取字符串 方法不一样

二:访问节点内容

from xml.etree import ElementTree as ET		# 导入xml模块
tree = ET.parse('xmltest.xml')		# 读取.xml文件
root = tree.getroot()							# 获取根节点,

rtag = root.tag				 # 获取节点的标签
rtext = root.text			 # 获取节点的文本内容
rattrib = root.attrib  # 获取节点的属性,返回dict格式,可以通过dict的方法获取具体的内容

### 通过for循环获取
for child in root:  	  # 遍历所有的子节点(不包含后代节点)
    print(child.tag)
    print(child.attrib)	# 如果属性为 空 的话,返回一个空的dict

### 获取指定后代节点
root.iter('Order')						 # 获取所有的Order节点,返回一个list对象
for i in root.iter('Order'):   # 由于是可以可迭代对象,可以通过for循环遍历
    print(i.attrib['orderid']) 
    

三:搜索节点

find()		# 搜索第一次出现的标签
findall()	# 搜索所有标签,返回一个列表

order = root.find('Body')  # 搜索Body节点
order = root.findall('Body/Order')  # 搜索Body节点下的所有Order节点

### 由于返回的是可迭代对象,可以通过for循环遍历
for child in root.findall('Order'):	# 遍历所有的Order节点
    ptint(child.attrib)							# 打印出Order节点的属性

四:修改节点

head = root.find('Head')        # 获取一个节点
head.text = 'YCY2'              # 修改值
head.attrib = {'name':'Head'}   # 修改属性(覆盖原有的属性)
head.set('age','18')            # 添加属性(在原有的基础上添加)

五:创建节点

### 在Head节点下面创建一个子节点
head = root.find('Head')        # 获取节点
body = ET.Element('Order')      # 创建一个Order节点
body.attrib = {"name":"body"}		# 设置属性
head.append(body)								# 通过append方法添加节点

六:删除节点

### 删除Head节点下的Order节点
tree = ET.parse('xmltest.xml')		# 读取.xml文件
root = tree.getroot()							# 获取根节点,

head = root.find('Head')  # 获取节点
root.remove(ordss)				# 删除节点
tree.write('xmltest.xml') # 保存文件

七:实例:创建XML并保存到文件

from xml.etree import ElementTree as ET

request = ET.Element('request')      # 创建根标签
request.attrib = {'service':'Order'} # 设置根标签的属性

head = ET.SubElement(request,'Head') # 在根标签下创建Head标签
head.text = 'YCY'   								 # 设置节点的内容

order = ET.SubElement(head,'Order')  # 在Head节点下创建Order节点
order.attrib = {'orderid':'TE2015'}  # 设置Order节点的属性

tree = ET.ElementTree(request)  		 # 创建xml对象
tree.write("request.xml")       		 # 保存到文件


### 创建的xml文件内容:
<request service="Order">
  <Head>
    YCY
    <Order orderid="TE2015" />
  </Head>
</request>

八:实例:修改XML文件

修改上面创建的xml文件。

1、修改Head节点的属性和内容

2、删除Head节点下的Order节点

3、在根节点下创建Body节点,并设置属性

4、在Body节点创建OrderSearch节点,并设置属性


from xml.etree import ElementTree as ET
updateTree = ET.parse('request.xml')
root = updateTree.getroot()

head = root.find('Head')        # 获取Head节点
head.text = None                # 修改内容为空
head.attrib = {'name':'Head'}   # 修改属性(为该元素重设属性)
head.set('age','18')            # 添加属性(在原有的基础上添加)

order = head.find('Order')      # 获取Head节点下的Order节点
head.remove(order)              # 删除Order节点

body = ET.Element('Body')       # 创建节点
body.attrib = {"name":"body"}   # 设置节点的属性

order = ET.SubElement(body,'OrderSearch')   # 为Body节点下创建一个OrderSearch节点
order.attrib = {'orderid':'TE20150111'}     # 创建 OrderSearch节点的属性

root.append(body)                   # 在根节点里面添加Body节点
updateTree.write("request.xml")     # 保存文件


### 修改后的xml文件内容:
<request service="Order">
  <Head age="18" name="Head" />
  <Body name="body">
    <OrderSearch orderid="TE20150111" />
  </Body>
</request>

猜你喜欢

转载自blog.csdn.net/q627794135/article/details/82025744