Python小工具导出应用层模块ARXML的S/R ports

Python小工具分享:

用python自带的ElementTree工具导出应用层模块ARXML中的S/R ports,方便模块工程师更新APPInterface。


网上关于xml的资料很多,但例子都太简单,直接引用需要先好好理解xml结构,之前花时间琢磨了下,记录一下两种方法。

1 通过标签名识别Ports

import xml.etree.ElementTree as ET

# 获取 XML 文档对象 ElementTree
tree = ET.parse('test.arxml')
# 获取 XML 文档对象的根结点 Element
root = tree.getroot()
# 打印根结点的名称
print("根节点的名称:", root.tag)
# 获取其他属性
print('root的属性:', root.attrib)

for child in root:
    print ("遍历root的下一层", child.tag, "----", child.attrib)

#根据标签名查找root下的所有标签
captionList = root.findall("R-PORT-PROTOTYPE")  #在当前指定目录下遍历
captionList1 = root.findall("P-PORT-PROTOTYPE")  #在当前指定目录下遍历
print("RPORT一共有:", len(captionList))
print("PPORT一共有:", len(captionList1))
#for UUID in RPORTS
   # name = stu.getElementsByTagName('SHORT-NAME')[0].childNodes[0].nodeValue
#print(root[0].tag, root[0][0].text)
for caption in captionList:
    print(caption[0].text)

print (20 * "*")

for caption in captionList1:
    print(caption[0].text)

2 通过标签路径识别Ports

import xml.etree.ElementTree as ET
# 获取 XML 文档对象 ElementTree
tree = ET.parse('1.arxml')
# 获取 XML 文档对象的根结点 Element
root = tree.getroot()
# 打印根结点的名称
print("根节点的名称:", root.tag)
# 获取其他属性
print('root的属性:', root.attrib)

for child in root:
    print ("遍历root的下一层", child.tag, "----", child.attrib)

#根据标签名查找root下的所有标签
#通过标签路径来查找目标标签
captionList = root.findall("AR-PACKAGE/AR-PACKAGES/AR-PACKAGE/ELEMENTS/APPLICATION-SW-COMPONENT-TYPE/PORTS/R-PORT-PROTOTYPE")  #在当前指定目录下遍历
captionList1 = root.findall("AR-PACKAGE/AR-PACKAGES/AR-PACKAGE/ELEMENTS/APPLICATION-SW-COMPONENT-TYPE/PORTS/P-PORT-PROTOTYPE")  #在当前指定目录下遍历
print("RPORT一共有:", len(captionList))
print("PPORT一共有:", len(captionList1))
#找不到标签会返回空列表
# 根据每一个父标签去找目标标签:SHORT-NAME
for RPORTS in captionList:
    RPORTS_NAME_tag = RPORTS.findall("SHORT-NAME")[0]
    RPORTS_NAME = RPORTS_NAME_tag.text   #字典
    print(RPORTS_NAME)
print (20 * "*")
print (20 * "*")
for PPORTS in captionList1:
    PPORTS_NAME_tag = PPORTS.findall("SHORT-NAME")[0]
    PPORTS_NAME = PPORTS_NAME_tag.text
    print(PPORTS_NAME)

结果如下

根节点的名称: AR-PACKAGES
root的属性: {}
遍历root的下一层 AR-PACKAGE ---- {'UUID': 'ac1b3980-acdc-589e-5e9c-30f924191f5f'}
RPORT一共有: 208
PPORT一共有: 76
gASI_u8SSBSw1
gASI_u8SSBSw2_InterCore
gASI_bKLRSw
gASI_bKL15Sw
gASI_bClutchSw
gANC_bDrvrDoorOpenSts
gANC_bFrtPsngDoorOpenSts
gANC_bRLDoorOpenSts
gANC_bRRDoorOpenSts
  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以使用现有的库来解析autosar标准文件(arxml)。其中最常用的库是pyarxmlxml.etree.ElementTree。 pyarxml是一个autosar标准文件解析库,可以方便地从arxml文件中提取出各种元素和属性。首先,我们需要在Python环境中安装pyarxml库,然后可以使用以下步骤来解析arxml文件: 1. 首先,导入pyarxml库: ``` import pyarxml ``` 2. 使用pyarxml库的`load`函数加载arxml文件: ``` root = pyarxml.load('path/to/your/arxml/file.arxml') ``` 3. 根据需要,可以使用`root`对象的属性和方法来提取出所需的元素和属性。例如,可以使用以下方法来提取出所有AUTOSAR包: ``` packages = root.get_packages() ``` `packages`是一个列表,包含了所有AUTOSAR包的对象。 4. 类似地,可以使用其他方法来获取其他类型的元素,如组、端口等等。例如,要获取所有端口: ``` ports = root.get_ports() ``` `ports`是一个列表,包含了所有端口的对象。 除了pyarxml库,还可以使用Python的内置库xml.etree.ElementTree来解析arxml文件。以下是使用xml.etree.ElementTree解析arxml文件的步骤: 1. 首先,导入xml.etree.ElementTree库: ``` import xml.etree.ElementTree as ET ``` 2. 使用库的`parse`函数加载arxml文件: ``` tree = ET.parse('path/to/your/arxml/file.arxml') ``` 3. 获取根元素: ``` root = tree.getroot() ``` 4. 根据需求,使用root对象的属性和方法来提取出所需的元素和属性。例如,要获取所有AUTOSAR包: ``` packages = root.findall(".//{%s}AR-PACKAGE" % root.nsmap[None]) ``` `packages`是一个包含所有AUTOSAR包的列表。 以上是使用Python解析autosar标准文件(arxml)的两种方法。具体使用哪一种方法取决于你的偏好和项目要求。这些方法可以帮助你从arxml文件中提取出必要的信息,并进行后续的处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值