Python 读取xml格式文件,可以读取xml中的注释内容


前言

最近接收到一个任务,把我们写的xml格式的自动化脚本,特定的标签增加guid标识,依次来区分案例,中间出现了一个问题:经过程序处理后的xml文件中的注释全部消失了,针对次问题特此记录问题解决方案。


一、使用的模块

xml.etree.ElementTree
xml.etree.ElementTree模块实现了一个解析和创建XML数据的简单而高效的API。XML是一种固有的分层数据格式,最自然的表示方法是使用树。通常,与整个文档的交互(读写文件)是用ElementTree完成的,与单个XML元素及其子元素的交互是用Element完成的。并不是输入xml的所有元素都会出现在最终的树中。目前会忽略输入xml中的注释、处理指令以及文档类型声明。但是可以使用API在构建的树中包含注释、处理指令,并输出到xml文件中。可以通过向XMLParser构造函数传递自定义的TreeBuilder实例来访问文档类型声明。

二、使用步骤

1.引入库

from xml.etree import ElementTree
import xml.etree.ElementTree as ET

2.读入数据

xml内容

<root>
	<case id="check-002" title="测试" flag="test">
		<step desc="测试">
			<Action trancode="021801" type="xml_set" server_index="2">
				<value name="//Sys_Head/SEQ_NO">{{seq_no}}</value>
			</Action>
			<Verify>
				<result name="RET_CODE">
					000000
				</result>
				<result name="RET_MSG">
					交易成功
				</result>
			</Verify>
		</step>
	</case>
</root>

封装可以读取xml注释的方法

# 可以读取xml中的注释内容
class CommentedTreeBuilder(ElementTree.TreeBuilder):
    def __init__(self, *args, **kwargs):
        super(CommentedTreeBuilder, self).__init__(*args, **kwargs)

    def comment(self, data):
        self.start(ElementTree.Comment, {})
        self.data(data)
        self.end(ElementTree.Comment)
 
 def read_xml(in_path):
    # 读取文件,并带有注释
    parser = ET.XMLParser(target=CommentedTreeBuilder())
    tree = ElementTree.parse(in_path, parser=parser)
    return tree

if __name__ == '__main__':
    path = r'E:\工作\interface\project\test\testcase\TCP挡板\tcp挡板设置.xml'
    tree = read_xml(path)

总结

常用方法:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值