k3q_arxml
介紹
倉庫地址1
倉庫地址2
極簡的arxml編輯庫,純python實現
用法
from pprint import pp # 可以美化打印對象,不然全打印在一行
import k3q_arxml
# 加載arxml文件
io_arxml = k3q_arxml.IOArxml(filepaths=['test/model_merge.arxml'])# 打印arxml字符串綁定的python arxml實例
io_arxml.print(print_filepath='model_merge.txt')# 刷新ref緩存數據,因為ref/ar/ref_to_ref/locate_filename訪問的都是緩存數據,如果修改了數據后,影響到了ref,就需要主動刷新
io_arxml.scan_ref()# 增/改
io_arxml.ref(('Implementations', 'HWIO')).resource_consumption = k3q_arxml.autosar.ResourceConsumption(short_name=k3q_arxml.autosar.Identifier(value='resourceConsumption'))# 刪
del io_arxml.ref(('Implementations', 'HWIO')).resource_consumption
io_arxml.ref(('Implementations', 'HWIO')).resource_consumption = None# 查
## 根據ref查arxml實例
io_arxml.ref(('Implementations', 'HWIO'))
## 根據ref查哪些arxml實例用到了該ref
io_arxml.ref_to_ref(('Implementations', 'HWIO'))
## 根據標簽查arxml實例(該需要帶有short_name屬性)
io_arxml.ar(clazz=k3q_arxml.autosar.ResourceConsumption)
## 根據標簽查arxml實例,但限定ref路徑下查找(該需要帶有short_name屬性)
io_arxml.ar(clazz=k3q_arxml.autosar.ResourceConsumption, ref_prefix=('Implementations',))# 輔助函數
## 控制臺打印uuid到ref的映射關系,能通過uuid快速定位ref路徑,輔助編碼
io_arxml.scan_ref(debug_uuid=True)
## 獲取路徑在那個arxml文件里
io_arxml.locate_filename(ref=('Implementations',))# 切換autosar_00052版本,默認為autosar_00048
from autosar import autosar_00052
k3q_arxml.autosar = autosar_00052# 回寫到文件
io_arxml.flush_to_file()
技巧
- 手動添加完成后的arxml和原始arxml,都通過io_arxml.print函數打印在文件里
- 通過對比軟件對比源arxml和打印的arxml,找出需要修改的arxml內容
- 該內容就是對象的定義代碼,可以復制出來粘貼到代碼里