python xml文件_python xml文件处理

xml 文件:

win

posix

View Code

获取root节点的三种方式

import xml.etree.ElementTree as xmlDoc

root=xmlDoc.parse('test.xml')._root #_root同getroot()

root=xmlDoc.ElementTree(file='test.xml').getroot()

root=xmlDoc.fromstring(open('test.xml').read())

遍历查找

for child in root:

print child.tag

for children in child:

print children.tag

直接索引访问

root[0][1][0][0][0][0][3][0].text

root[0][0][0].get('Type')

find 查找,只匹配第一个

root.find('Job').attrib #在直接子节点中查找Job直接子节点

root.find("Job/Parameters/Parameter").attrib['Value'] #查找Job/Parameters/Parameter下的所有直接子节点,并返回第一个直接子节点

root.find("Job/Parameters/Parameter[@Name='Maple Version' and Type='Single']").attrib['Value'] #查找Job/Parameters/Parameter下的所有直接子节点,并返回Name="Maple Versino"这个直接子节点

#findall 查找,匹配所有的,返回数组

root.findall('Job')[0].tag #在直接子节点中查找Job直接子节点,返回数组

root.findall('Job/Parameters/Parameter')[1].attrib['Name'] #返回Job/Parameters/Parameter下的所有直接子节点的数组

root.findall("Job/Parameters/Parameter[@Name='Type']") #返回Job/Parameters/Parameter下 Name='Type'的直接子节点的数组

#iter 查找

for i in root.iter('Value'): #在文件中查找Value的节点,生成器

print i.text

##修改Text

import xml.etree.ElementTree as xmlDoc

tree=xmlDoc.parse('test.xml')

root=tree.getroot()

for i in root.iter('Value'):

if i.text == 'win':

i.text = 'Linux'

print xmlDoc.dump(root) #预览

tree.write('a.xml',encoding='utf-8') #保存

#修改属性

root[0].get('Name') 获取属性

root[0].set('Name','aaa') 更新,添加属性

del root.attrib['Type'] 删除属性

#删除节点

root.remove(root[0])

tree.write('a.xml',encoding='utf-8')

#添加节点

import xml.etree.ElementTree as xmlDoc

tree=xmlDoc.parse('a.xml')

root=tree.getroot()

node_1=xmlDoc.Element('Maple',{'Value':'Node1'}) #新建一个节点

node_1.tail='\n' #缩进

node_2=xmlDoc.SubElement(node_1,'Job') #新建一个子节点

node_2.set('Value','100')

node_2.text='10'

root.insert(1,node_1) #append

root.append(node_1) #insert

node_3=xmlDoc.Element('Task1')

node_4=xmlDoc.Element('Task2')

root.extend([node_3,node_4]) #extend

xmlDoc.dump(root) #预览

tree.write('b.text',encoding='utf-8') #保存,可以保存到b.text 或者b.html或者b.xml

**使用xml.etree.ElementTree 创建节点保存时,没有缩进,不太美观,所以采用xml.dom来创建节点并保存

from xml.dom import minidom

file=minidom.Document() #创建xml文件对象

node_1=file.createElement('root') #创建节点

file.appendChild(node_1) #使其成为根节点

node_2=file.createElement('Maple') #创建第二个节点

node_2.setAttribute('TestName','aaa') #设置attrib

node_3=file.createElement('Job') #创建第三个节点

node_3.setAttribute('Jobname','job') #设置attrib

node_3.appendChild(file.createTextNode('100')) #设置Text

node_2.appendChild(node_3)

node_1.appendChild(node_2)

with open('b.xml','w') as f:

file.writexml(f,indent='',addindent='\t',newl='\n',encoding='UTF-8')

indent:每个tag前填充字符

newl:每个tag后的填充字符

addindent:每个节点的缩进字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值