<参数 name="g_server_po_lxml 读写">
当前位置:   article > 正文

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

lxml 读写

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>  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
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', ''))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

创建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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

各个参数含义如下:
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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/591566
推荐阅读
相关标签
  

闽ICP备14008679号