python解析arxml--Apple的学习笔记

作者: applecai | 来源:发表于2019-09-30 21:53 被阅读0次

    一,目标:

          汽车行业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的学习笔记

        本文链接:https://www.haomeiwen.com/subject/auvhpctx.html