参数 name="g_server_po_lxml 读写">
赞
踩
下面展示详细解析过程。
<?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文档节点,例如 我们想上面的节点插入一个变量,并保持格式化美化。
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文档节点,例如 我们想上面的节点更新一个变量。
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')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。