如何引用XML文件生成C#类
目录
XSD File Generate Class File Simply. 1
Why use XSD file to create C# classes?... 2
How to convert XML file to XSD file?. 2
How to create C# file by XSD file?. 4
What is xsd command params?. 8
Reference. 11
Why use XSD file to create C# classes?
当应用场景是这样的:
1. 需要定义大量的自定义格式的XML协议,供通讯双方使用,本文基于内部接口测试工具的测试协议格式。
2. 减少中间依赖关系,类依赖于XML协议的格式,而非用CS文件序列化XML文件。
How to convert XML file to XSD file?
准备一个支持W3C标准的XML文件(必须有文件头<?xml version="1.0" encoding="utf-8"?>)
<?xml version="1.0" encoding="utf-8" ?>
<protobuftest>
<head>
<version>1.0.0</version>
<description>Bocode protobuf test protocol</description>
</head>
<transaction>
<name>Transaction 01</name>
<items>
<item>
<name>Functional Test 01</name>
<description>Test protobuf demo</description>
<testinput>
<code>4002</code>
</testinput>
<testparams>
<usepretest>false</usepretest>
<keystring>
<key>10005</key>
<value>100</value>
<pindex>0</pindex>
</keystring>
<keybytes>
<key>10007</key>
<value>12jkjk123jk12312k312k3k1221k3jk21123213k3k13k1</value>
<pindex>0</pindex>
</keybytes>
<keylist>
<keystring>
<key>30002</key>
<value>0</value>
<pindex>0</pindex>
</keystring>
<keystring>
<key>30002</key>
<value>10</value>
<pindex>0</pindex>
</keystring>
<keystring>
<key>30002</key>
<value>10</value>
<pindex>0</pindex>
</keystring>
</keylist>
</testparams>
<testoutput>
<resultcode>0</resultcode>
</testoutput>
</item>
<item>
<name>Functional Test 02</name>
<description>Test protobuf demo</description>
<testinput>
<code >4002</code>
</testinput>
<testparams>
<keystring>
<key>10005</key>
<value>100</value>
</keystring>
<keybytes>
<key>10007</key>
<value>12jkjk123jk12312k312k3k1221k3jk21123213k3k13k1</value>
</keybytes>
<keylist>
<keystring>
<key>30002</key>
<value>0</value>
</keystring>
<keystring>
<key>30002</key>
<value>10</value>
</keystring>
<keystring>
<key>30002</key>
<value>10</value>
</keystring>
</keylist>
</testparams>
<testoutput>
<resultcode>0</resultcode>
</testoutput>
</item>
</items>
</transaction>
</protobuftest>
以文件方式保存在XXX路径下,并启动VS2012 ARM Cross Tools Command Prompt
之后在XXX目录下即生成ProtobufTest_Demo.xsd文件
How to create C# file by XSD file?
首先准备一个xsd文件,保存在XXX路径,命名为ProtobufTest_Demo.xsd
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="protobuftest" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="keystring">
<xs:complexType>
<xs:sequence>
<xs:element name="key" type="xs:string" minOccurs="0" />
<xs:element name="value" type="xs:string" minOccurs="0" />
<xs:element name="pindex" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="protobuftest" msdata:IsDataSet="true" msdata:Locale="en-US">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="keystring" />
<xs:element name="head">
<xs:complexType>
<xs:sequence>
<xs:element name="version" type="xs:string" minOccurs="0" />
<xs:element name="description" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="transaction">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" />
<xs:element name="items" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" />
<xs:element name="description" type="xs:string" minOccurs="0" />
<xs:element name="testinput" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="code" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="testparams" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="usepretest" type="xs:string" minOccurs="0" />
<xs:element ref="keystring" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="keybytes" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="key" type="xs:string" minOccurs="0" />
<xs:element name="value" type="xs:string" minOccurs="0" />
<xs:element name="pindex" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="keylist" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element ref="keystring" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="testoutput" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="resultcode" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
然后打开VS2012 Command Prompt(开始---所有程序---Microsoft Visual Studio 2012---Visual Studio Tools---VS2012 ARM Cross Tools Command Prompt)
(文中TestXSD为ProtobufTest_Demo.xsd路径, /classes为输出类型, /language:CS为输出语言)
打开 ProtobufTest_Demo.cs文件:
What is xsd command params?
C:\TestXSD>xsd /?
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.17929]
Copyright (C) Microsoft Corporation. All rights reserved.
xsd.exe -
Utility to generate schema or class files from given source.
xsd.exe <schema>.xsd /classes|dataset [/e:] [/l:] [/n:] [/o:] [/s] [/uri:]
xsd.exe <assembly>.dll|.exe [/outputdir:] [/type: [...]]
xsd.exe <instance>.xml [/outputdir:]
xsd.exe <schema>.xdr [/outputdir:]
- OPTIONS -
/classes
Generate classes for this schema. Short form is '/c'.
/dataset
Generate sub-classed DataSet for this schema. Short form is '/d'.
/enableLinqDataSet
Generate LINQ-enabled sub-classed Dataset for the schemas provided. Short f
orm is '/eld'.
/element:<element>
Element from schema to process. Short form is '/e:'.
/fields
Generate fields instead of properties. Short form is '/f'.
/order
Generate explicit order identifiers on all particle members.
/enableDataBinding
Implement INotifyPropertyChanged interface on all generated types
to enable data binding. Short form is '/edb'.
/language:<language>
The language to use for the generated code. Choose from 'CS', 'VB', 'JS',
'VJS', 'CPP' or provide a fully-qualified name for a class implementing
System.CodeDom.Compiler.CodeDomProvider. The default language
is 'CS' (CSharp). Short form is '/l:'.
/namespace:<namespace>
The namespace for generated class files. The default namespace
is the global namespace. Short form is '/n:'.
/nologo
Suppresses the banner.
/out:<directoryName>
The output directory to create files in. The default
is the current directory. Short form is '/o:'.
/type:<type>
Type from assembly to generate schema for. Multiple types may be provided.
If no types are provided, then schemas for all types in an assembly
are generated. Short form is '/t:'.
/uri:<uri>
Uri of elements from schema to process. Short form is '/u:'.
- ADVANCED -
/parameters:<file>
Read command-line options from the specified xml file. Short form is '/p:'.
- ARGUMENTS -
<schema>.xsd Name of a schema containing elements to import.
<assembly>.dll|exe Name of an assembly containing types to generate schema for.
<instance>.xml Name of an xml file to infer xsd schema from.
<schema>.xdr Name of an xdr schema to convert to xsd.
Multiple file arguments of the same type may be provided.
Reference
http://msdn.microsoft.com/zh-cn/library/x6c1kb0s(VS.80).aspx.
如何引用XML文件生成C#类的更多相关文章
- 根据XML文件 生成 java类
最近一直在做关于webservice 的项目,这种项目最麻烦的就是根据对方的要求产生XML,文档里面虽然有XML结构,但是要转化为java里面的实体实在费劲, 有个自动化的工具就好了,半自动化也好,省 ...
- WebAPI使用多个xml文件生成帮助文档
一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet.WebApi.HelpPage)可以根据注释生成帮助文档,查看代码实现会发现是基于解析项目生成的xm ...
- WebAPI使用多个xml文件生成帮助文档(转)
http://www.cnblogs.com/idoudou/p/xmldocumentation-for-web-api-include-documentation-from-beyond-the- ...
- 【转】WebAPI使用多个xml文件生成帮助文档
来自:http://www.it165.net/pro/html/201505/42504.html 一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- C#读取XML文件的基类实现
刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node ...
- XML文件与实体类的互相转换
XML文件与实体类的互相转换 一.将XML文件反序列化为实体类对象 1. 通常程序的配置信息都保存在程序或者网站的专门的配置文件中(App.config/web.config).但是现在为了演示XML ...
- XML文件生成C++代码(基于rapidxml)
简述 与XML文件生成C++代码(基于pugixml)中的功能一致,只是这里改用的rapidxml来实现.就不多说了,直接放代码. 代码 #include "rapidxml-1.13/ra ...
- XML文件生成C++代码(基于pugixml)
简述 在一个项目中需要用到XML的解析和生成,知乎上有人推荐rapidxml和pugixml等库.RapidXML一看库还比较大,就先研究一下pugixml了. 因为对解析XML的需求不大(都是一些很 ...
随机推荐
- php 利用activeMq+stomp实现消息队列
php 利用activeMq+stomp实现消息队列 一.activeMq概述 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J ...
- Git操作指令进阶
注意: 学习前请先配置好Git客户端 相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略 官方中文手册:http://git-scm.com/book/zh GIT 学习手册简介 本站 ...
- yum 安装包的用法
最近刚爆出linux下glibc有重大漏洞,修复方案为升级glibc库 RHEL/CentOS下一键即可修复 : sudo yum update glibc .或者如果本地有rpm包 直接 rpm - ...
- 【NOIP合并果子】uva 10954 add all【贪心】——yhx
Yup!! The problem name reects your task; just add a set of numbers. But you may feel yourselvesconde ...
- HDU 3333 Turing Tree --树状数组+离线处理
题意:统计一段序列[L,R]的和,重复元素只算一次. 解法:容易看出在线做很难处理重复的情况,干脆全部讲查询读进来,然后将查询根据右端点排个序,然后离散化数据以后就可以操作了. 每次读入一个数,如果这 ...
- FreeMarker 一二事 - 静态模板结合spring展示
freemarker可以脱离web使用 前一篇文章使用了普通的方法 这回说说结合spring pom额外引入这个jar包 <dependency> <groupId>org.s ...
- Linux 常用基本命令
这两天有俩哥们问了我linux的事,问我在工作中需不需要用到,需不需要学会 一个是工作1年不到的,我跟他说,建议你学学,在以后肯定是要用到的,虽然用到的机会不多,但是会总比不会好 另一个是工作6年的, ...
- 在spring环境下集成ActiveMQ
1.参考文献 Spring集成ActiveMQ配置 Spring JMS异步发收消息 ActiveMQ 2.环境 在前面的一篇ActiveMQ入门实例中我们实现了消息的异步传送,这篇博文将如何在spr ...
- openstack常规操作命令梳理
之前顺利部署了openstack+kvm的虚拟化云平台管理环境,其中,涉及到不少openstack操作命令,记录如下: 查看rabbitmq 队列[root@openstack ~]#rabbitmq ...
- 认识实验室信息管理系统(LIMS)
在当今互联网如日中天的大环境下,各种伴随着互联网的产物如p2p,o2o在如火如荼的进行着,吸引了大量的开发人员都涌向了这个行业,所有的技术似乎都在围绕着互联网发展,传统行业软件开发的人气和关注度就相形 ...