如何使用MonoXSD / xsd.exe使用xsd文件生成C#类?

文章目录引言什么是MonoXSD/xsd.exe如何使用xsd.exe的参数解析引言之前写了这两篇,对OpenDRIVE文件的读写有了一点认识。【C#】读写XML文件总结OpenDRIVE——如何高效查阅元素和属性但我也会思考一个问题,如何检测我读入的文件是否符合OpenDRIVE的规范呢?这天,我看到了LGSVL Simulator的源码,它可以实现OpenDRIVE1.4地图的读写。我好奇地看了看它是如何读写OpenDIRVE的:使用的果然是Deserialize函数和Serialize
摘要由CSDN通过智能技术生成

引言

之前写了这两篇,对OpenDRIVE文件的读写有了一点认识。

但我也会思考一个问题,如何检测我读入的文件是否符合OpenDRIVE的规范呢?

这天,我看到了LGSVL Simulator的源码,它可以实现OpenDRIVE1.4地图的读写。我好奇地看了看它是如何读写OpenDIRVE的:使用的果然是Deserialize函数和Serialize函数(可查看【C#】读写XML文件总结)!

但是它的OpenDRIVE类比我之前看到的要复杂很多,最上方的注释,解释了这个玄机:

//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
//
//This source code was auto-generated by MonoXSD
//

原来OpenDRIVE的类可以由xsd文件自动生成!这样就不用自己费尽心思去考虑类中到底要添加哪些元素和属性了~ 此外,还可以检测到读取的文件是否符合xchema规范、确保写到硬盘中的文件也符合规范,正确性的问题也解决了!

目前OpenDRIVE的官网给出了1.6,1.5,1.4的规范说明,而1.6和1.4并不兼容,所以我们的OpenDRIVE读写器必须同时兼容以上3个版本,这样的话我们就需要分别根据它们的xsd文件生成对应的类了~

什么是MonoXSD/xsd.exe

微软的.NET官方文档中介绍了XML架构定义工具(Xsd.exe)。它可以从XDR,XML和XSD文件或运行时程序集中的类生成XML架构或公共语言运行时的类。

XML架构定义工具(Xsd.exe)通常可以在以下路径中找到:

C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ {
   version} \ bin \ NETFX {
   version} Tools \

如何使用

微软的官方文档 How to: Use the XML Schema Definition Tool to Generate Classes and XML Schema Documents 中介绍了给工具的用法。

我举个例子:把OpenDRIVE V1.6的xsd文件转成对应的类:

  1. 导航到需要转换的xsd文件所在的目录
    在这里插入图片描述
    在地址栏中输入cmd,在此位置打开一个命令行工具
    在这里插入图片描述

  2. C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ {version} \ bin \ NETFX {version} Tools \目录下找到xsd.exe,并拷贝到xsd文件所在目录。
    在这里插入图片描述

  3. 输入以下命令,即可生成.cs文件:

    xsd /classes /language:CS opendrive_16_core.xsd
    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值