pythonar_python解析arxml--Apple的学习笔记
⼀,⽬标:
汽车⾏业Autosar⽤developer⼯具会⽣成RTE接⼝,RTE解析中的信息,特别是data element⽆法导出查看,只能连接dangle打开developer⼯程才能看。我觉得不⽅便。
所以靠⾃⼰解析arxml则可以随时阅读各种信息。
⼆,调研:
我要怎样才能完成我⾃⼰⽬标,⾃⼰解析arxml呢?先由简单的xml解析开始,昨天已经⾃学了python3.7⾃带的xml包的ET模块,以及lxml这个第三⽅包(主要是xpath可以直接定位⽐较好⽤)
还了解了xsd是xml的模板框架⽂件。可以⽤来验证xml,其实也可以⽤xsd来⽣成xml(这个⽬前对我来说有难度,我的重点还是在解析xml 不是⽣成xml)
在了解xsd的过程中发现了⼀个很好的第三⽅包generateDS。他可以通过xsd来⽣成xml解析的⾃动api,然后基于这些api可以做⼆次开发。
三,⽴项
python处理xml文件
当然我⾃⼰尝试了⽤lxml和模块解析xml,都可以⽤,但是要求对xml结果很熟悉,⽽且每次若需求不同要求解析的的内容不同,则会带来代码重写,所以不⽅便。于是我就将⽅案定为⽤generateDS产⽣的api进⾏⼆次开发。
结果我做成功了。并且还能轻松的解析autosar developer中SWC模块的arxml。同时也对xml格式以及如何阅读xml和xsd有了更深⼊的了解。
四,我的源码
设计思路是先由⼀份swc.arxml⽣成了⼀份xsd⽂件,然后由xsd⽂件通过generateDS⽣成了api后进⾏⼆次开发,⽣成了port/interface 等信息表。然后对PortInterfaces.arxml也进⾏了解析,为了获取datatype和swc⽣成的表拼接,否则swc表中是没有data type信息的。
效果如下:
五,环境及⼯具链搭建
5.1 xsd的使⽤
5.1.1. 需要安装
5.1.2. 将xml放置在exe的同⼀⽬录
5.1.3. 创建⼀个myOutputDir作为存放⽣成xsd⽂件的⽂件夹
5.1.4.在此路径运⾏cmd命令,输⼊如下命令,即可在myOutputDir⽂件夹下⽣成对应的xsd⽂件
< RTE_l /outputdir:myOutputDir
5.2 通过xsd⽣成python api的⽅法
5.2.1 确保python已经安装了generateDS-2.33.6第三⽅库
安装⽅法为普通第三⽅包的安装⽅法如下
python setup.py build
python setup.py install
5.2.2 进⼊此⽂件夹,并且将xsd⽂件夹copy⼊此⽂件夹。输⼊如下命令,即可⽣成⾃动api
python generateDS.py -o RTE_test_update_api.py RTE_test_update.xsd
5.3 通过python api读取xml信息进⾏⼆次开发的⽅法
主处理函数如下,将silence设置为True。
所有读取的xml信息都在rootObj对象中,可以任何获取,继续进⾏⼆次开发。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。