XML 格式在汽车领域使用指南

Posted 自动驾驶技术探索

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML 格式在汽车领域使用指南相关的知识,希望对你有一定的参考价值。



XML 格式在汽车领域使用指南

什么是 XML ?

XML 全称为EXtensible Markup Language,为可扩展标记语言,如何熟悉 html,会发现两者语法结构很像。XML 具有如下显著特点:

XML 被设计为传输和存储数据,其焦点是数据的内容,HTML 被设计用来显示数据,其焦点是数据的外观,HTML 旨在显示信息,而 XML 旨在传输信息,这是 XML 与 HTML 文件的主要区别XML 不会有任何行为,当一个 XML 文件被定义,那它就仅仅是一堆数据以某种结构存在哪里,它本身不像 protobuf 等格式文件一样,不具备自己的编码,传输和显示等协议XML 只具备简单的语法规则,不限制内容,用户可以发明自己的标签,在很多特定领域会定自定义标签规则的 XML 文件,但这是 XML 本身不具备的内容,因此可扩展性很强,这也使得它用途十分广泛

XML 在汽车领域的使用

XML 文件在汽车领域应用十分广泛,不同的组织通过定义不同的标签规则,将 XML 文件应用于不同的领域,通常会将其尾缀换成其他,但仍然是 XML 基本语法,举几个例子:

arxml 文件:在 AutoSAR 架构体系里,arxml 文件是通用的配置文件xord 文件:OpenDrive 的定义文件xosc 文件:OpenScenario 的定义文件

作为汽车软件工程师,很有必要对 XML 文件进行深入的研究。

XML 如何使用?

一般来说,xml 具有以下几种使用方式。

直接编写 xml 文件进行数据存储通过代码将数据按照 xml 基本规范写入本地 .xml 文件定义好一个标签规范,按照标签规范进行数据存储和使用

直接编写 xml 文件进行数据存储

使用这种方式一般是作为小规模的配置文件,固定一些参数,从这个 .xml 文件里读取一些数据 这种方式实现手段一般是:

熟悉 XML 基本语法规范(https://www.runoob.com/xml/xml-tutorial.html)编写简单的 xml 文件构造配置文件

通过代码将数据按照基本规范写入本地.xml文件

使用这种方式一般是需要将程序运行的数据结果以一定的结构存入本地,方便后面数据使用。一般来说至少需要掌握以下几种编程语言的实现:

Python xml 文件的写入和读取,可使用第三方库 ElementTree 进行解析,参考文章 使用Python ElementTree 解析XML 实例(https://www.zhihu.com/people/yang-yue-1992/posts?page=2)C/C++ xml 文件的写入和读取,可使用 TinyXML 库,参考文章 C++解析XML文件(https://blog.csdn.net/u014311125/article/details/89199435)

按照定义好标签规范进行数据存储和使用

使用这种方式一般是在标准或者协议定义上,规范好用户需要怎样使用节点等。实现的流程一般是:

定义好规则得到 .xsd 文件  关于怎么得到 .xsd 文件一般有如下几种方法:熟悉 XSD(XML Schema Definition)(https://www.runoob.com/schema/schema-tutorial.html),使用文本编辑器比如 notepad++ 进行编辑使用专业的 xml 编辑器进行编写,比如 XMLspy先编写 xml 文件,然后将 xml 文件转换为模板文件 xsd,这是本文比较推崇的做法,一般实现手段为:win10 自带 xsd.exe 工具,参考xsd.exe官方使用指南(https://docs.microsoft.com/zh-cn/dotnet/standard/serialization/xml-schema-definition-tool-xsd-exe)另外一些网页工具支持 xml 转 xsd,比如 xml2xsd(https://www.liquid-technologies.com/online-xsd-to-xml-converter).xsd 文件生成不同编程语言的类文件,方便程序将数据写入 xml 文件 不同编程语言能够通过一些工具将其转换为本身的类文件,这样方便不同编程语言对数据存入 xml 的实现。列出几种常用编程语言的实现工具:C#/VB/javascript/VJS: 使用上面提到的 win10 自带工具xsd.exe,参考xsd.exe官方使用指南(https://docs.microsoft.com/zh-cn/dotnet/standard/serialization/xml-schema-definition-tool-xsd-exe)Python: 使用 generateDS(http://www.davekuhlman.org/generateDS.html)C/C++: 使用 XBinder.xsd 文件的存在还提供了另外一种使用的可能性,使用 .xsd 文件来验证 .xml 文件是否符合其规则,下面列出 Python 和 C/C++ 实现手段:Python: 使用 xmlschema(https://xmlschema.readthedocs.io/en/latest/intro.html)C/C++:使用 Xerces(http://xerces.apache.org/xerces-c/)





以上是关于XML 格式在汽车领域使用指南的主要内容,如果未能解决你的问题,请参考以下文章

通过基于XML的ASAM传输格式

Cg入门20:Fragment shader - 片段级模型动态变色(实现汽车动态换漆)

UI5 - XML 片段中的格式化程序只执行一次。如何再次运行它们?

UI5 - XML片段中的格式化程序只执行一次。如何再次运行它们?

如何在 Javadoc 中使用 @ 和 符号格式化代码片段?

AJAX 响应:数据(JSON、XML)还是 HTML 片段? [关闭]