整理Python lxml读写xml文件详细教程

Python lxml读写xml文件详细教程

xml文档解析

下面展示详细解析过程。

<?xml version='1.0' encoding='UTF-8'?>
<root>
  <全局变量>
      <参数 name="g_server_ip" value="192.168.0.6" type="str" Remark="服务器IP地址"/>
      <参数 name="g_server_port" value="9008" type="int" Remark="服务器端口号"/>
  </全局变量>
</root>  
from lxml import etree
def parsexmlfile(path):
	"""
	path xml文件路径
	"""
	tree = etree.parse(path)
	        row = 0
	        for global_var_root in tree.xpath('//全局变量'):
	            for variabl in global_var_root .getchildren():
	            print(va.get('name', ''))
	            print(va.get('value', ''))
	            print(va.get('type', ''))
	            print(va.get('Remark', ''))

创建xml文档节点

下面展示创建xml文档节点,例如 我们想上面的节点插入一个变量,并保持格式化美化。

from lxml import etree
def CreateXmlNode(path):
	"""
	path xml文件路径
	"""
	parser = etree.XMLParser(remove_blank_text=True)
    tree = etree.parse(path,parser=parser)
    variable_root_lst = tree.xpath('//全局变量')
    newSub = etree.Element("参数")
    newSub.set('name', 'Abc')
    newSub.set('value', '1520')
    newSub.set('type', 'int')
    newSub.set('Remark', 'Helllo')
	newSub1 = etree.Element("参数")
    newSub1.set('name', 'test')
    newSub1.set('value', '6655')
    newSub1.set('type', 'str')
    newSub1.set('Remark', 'world')
    variable_root_lst[0].append(newSub)
    variable_root_lst[0].append(newSub1)
    tree.write(path, pretty_print=True, xml_declaration=True, encoding='utf-8')

各个参数含义如下:
1)第1个参数是xml的完整路径(包括文件名);
2)pretty_print参数是否美化代码;
3)xml_declaration参数是否写入xml声明,就是我们看到xml文档第1行文字;
4)encoding参数很明显是保存的编码。
(注意:parser = etree.XMLParser(remove_blank_text=True) 一定要加,不然pretty_print是没有作用,会出现排版的问题)

更新xml文档节点

下面展示创建xml文档节点,例如 我们想上面的节点更新一个变量。

from lxml import etree
def updateXmlNode(path):
	"""
	path xml文件路径
	"""
	tree = etree.parse(path)
	for global_var_root in tree.xpath('//全局变量'):
		for va in global_var_root .getchildren():
			if va.get('name', '') == "IP":
				va.set('value', '192.168.1.5')
				break
	tree.write(path, pretty_print=True, xml_declaration=True, encoding='utf-8')
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飛越無限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值