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可以做二次开发。

三,立项

    当然我自己尝试了用lxml和xml.etree模块解析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信息的。

guthub路径:https://github.com/AppleCai/Arxmlgen

效果如下:

五,环境及工具链搭建

5.1 xsd的使用

5.1.1. 需要安装xsd.exe.

5.1.2. 将xml放置在exe的同一目录

5.1.3. 创建一个myOutputDir作为存放生成xsd文件的文件夹

5.1.4.在此路径运行cmd命令,输入如下命令,即可在myOutputDir文件夹下生成对应的xsd文件

   xsd.exe RTE_test_update.xml /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对象中,可以任何获取,继续进行二次开发。

你可能感兴趣的:(python解析arxml--Apple的学习笔记)