Python小工具导出应用层模块ARXML的SR ports

Python小工具导出应用层模块ARXML的SR ports,第1张

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5700418.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存