ARXML 解析与自动化脚本 Q1:用 Python + lxml 自动生成 / 检查 AUTOSAR 配置?常见自动化场景有哪些?

原始 Flomo:https://v.flomoapp.com/mine/?memo_id=MjU1MjU0NzY2

ARXML 解析与自动化脚本 Q1:用 Python + lxml 自动生成 / 检查 AUTOSAR 配置?常见自动化场景有哪些?

答:可以。ARXML 本质是 XML,用 lxml / xml.etree + XPath 就能解析、生成、检查。

常见自动化场景:

  1. 批量重命名 / 修改:批量给 PDU 名称加前后缀、批量改 PDU 的 CAN ID / DLC、批量给 SW-C 加端口。

  2. 一致性 / 完整性检查:检查所有 SW-C 端口是否映射完整(每端口都连到目标)、每个 PDU 是否都映射了信号、所有 REF 引用是否指向存在的对象(断链检测)。

  3. 生成配置片段:按模板批量生成 SW-C / PDU / 信号定义的 ARXML 片段。

  4. 跨文件关联校验:把多个 ARXML(SW-C 描述、系统描述、BSW 配置)做交叉引用校验。

  5. 导出报告:把配置信息(PDU 列表、信号列表、端口映射)导出成表格 / 文档。

  6. CI 集成:CI 里跑检查脚本作为门禁(命名规范、错误校验)。

关键技术点:

  • ARXML 引用密集(大量 REF + DEST 属性指向其他对象),所以检查的核心是「引用完整性」——遍历所有 REF,检查目标对象是否在对应类型(DEST)下存在。
  • 难点:结构深、命名空间 + 版本差异、引用是绝对路径(短名路径),要按规约解析;要做语义化检查得懂 AUTOSAR Meta Model(如 PortPrototype、PduToSignalMapping)。

一句话:ARXML = XML,用 lxml + XPath 可以批量改、检查一致性(尤其 REF 引用完整性)、生成片段、导出报告、接 CI;难点在引用解析和 Meta Model 语义。

上一题:https://v.flomoapp.com/mine/?memo_id=MjU1MjU0NzEw
总表:https://v.flomoapp.com/mine/?memo_id=MjMxMTQ2NDk4

AUTOSAR

可复现的 Python 解析起点

ARXML 通常使用 XML namespace,不能假设裸 XPath(例如 //SHORT-NAME)在所有文件上都能命中。建议先读取根节点 namespace,再使用显式命名空间映射;同时按项目指定的 AUTOSAR XSD 版本做 schema validation。

from lxml import etree
 
parser = etree.XMLParser(
    resolve_entities=False,
    no_network=True,
    remove_blank_text=False,
)
tree = etree.parse("SystemDescription.arxml", parser)
 
ns = {"ar": "http://autosar.org/schema/r4.0"}
names = tree.xpath("//ar:SHORT-NAME/text()", namespaces=ns)
print(names[:10])

实际 namespace URI 与 schema 版本必须从文件根元素确认。对 REF 做校验时,先建立对象路径/UUID/DEST 索引,再解析目标引用;仅用字符串搜索会漏掉命名空间、短名路径和跨文件引用。

生产脚本应保留原始文件、生成规范化 diff、输出行/对象定位信息,并在写回前做 XSD 校验、引用完整性检查和工具链重新导入验证。