• 459查看
  • 0回复

[Autosar] 通过Python处理xml文件

[复制链接]


该用户从未签到

发表于 21-1-2024 11:37:51 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


01

背景

在使用 Autosar 工具直接应对大型XML文件时,你可能会遭遇一系列繁琐的步骤,甚至偶遇应用程序卡顿的困扰。本文利用Python的XML库来解析和处理XML文件。

Python 标准库中有一个非常实用的部分——xml.etree.ElementTree。这个库可以帮助我们轻松地处理 XML 数据,包括解析、创建和修改 XML 文档。

XML(可扩展标记语言)是一种类似于 HTML 的标记语言,用于存储和传输结构化数据。与 HTML 不同的是,XML 更注重数据内容,而不会指定任何显示样式。XML 文件通常包含多个元素,每个元素都有自己的标签名、属性和文本内容。这些元素可以嵌套在其他元素中,形成一个树状结构。同样的在AutoSar的arxml文件中,也是一样的,可以使用VsCode的折叠功能来下树桩结构:

通过Python处理xml文件w1.jpg
接下来以在Com.arxml中添加、删除元素为例,介绍下python下的xml库。

02

xml库介绍

xml.etree.ElementTree 是 Python 中的一个标准库,提供了简洁易用的 API 来操作 XML 数据。以下是使用 ElementTree 的一些优势:

    轻量级:ElementTree 模块占用资源较少,适合快速读取和写入 XML 数据。

    高效:它提供了一个高效的 C 语言实现版本(cElementTree),可以在处理大型 XML 文件时提高性能。

    易于理解:API 设计直观,对于初学者来说学习成本较低。

    广泛支持:作为 Python 标准库的一部分,几乎所有的 Python 环境都内置了这个模块。


03

解析xml文件

这部分代码比较简单,使用库函数即可。定义了一个名为 Modify_Xml 的类,用于操作XML文件。在初始化方法中,接收了XML文件路径和DBC文件(但在这个示例中没有使用DBC文件)。然后使用 ElementTree 库解析XML文件,并获取根元素。

通过Python处理xml文件w2.jpg

04

遍历xml

由于XML的树桩结构,我们需要遍历根元素的所有子元素:

通过Python处理xml文件w3.jpg

通过Python处理xml文件w4.jpg

之后可以在Vscode的调试界面查看、debug。

如图为将解析出的element打印出来:

通过Python处理xml文件w5.jpg

05

插入XML

通过Python处理xml文件w6.jpg

之后根据自己的需要去插入自己需要的项目配置即可。

最后写出自己生成的xml文件。

通过Python处理xml文件w7.jpg

生成的xml比较如下:

通过Python处理xml文件w8.jpg

06

修改、删除XML

同样的可以根据示例代码去创建相应的类的方法即可:

修改XMLfor child in root:if child.tag == "child1":        child.text = "New value"删除XMLchild = root.find(".//child1")if child isnotNone:    root.remove(child)
这里就不再赘述了。

心动不如行动,动手写xml肯定跟配置xml是不一样的思路!

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 1-2-2025 12:56 , Processed in 0.536754 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.