如何引用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的需求不大(都是一些很 ...
随机推荐
- JavaScript吸顶灯的实现
吸顶灯是各站点常用的一个功能,它有两个特性 向下滚动到div位置时,该div一直固定在页面的顶部 向上滚动到div原有位置时,div又恢复到文档中的原位置 div可能是一个“分类菜单”,也可能是一个“ ...
- hdu 4635 Strongly connected 强连通缩点
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4635 题意:给你一个n个点m条边的图,问在图不是强连通图的情况下,最多可以向图中添多少条边,若图为原来 ...
- oracle创建数据库和用户
以前开发的时候用得比较多的是mysql和sql server,oracle用的比较少,用起来比较生疏,mysql和sql server用起来比较类似,就oracle的使用方式和他们不同,oracle在 ...
- POJ 2406 Power Strings (KMP)
Power Strings Time Limit: 3000MSMemory Limit: 65536K Total Submissions: 29663Accepted: 12387 Descrip ...
- 17110 Divisible(basic)
17110 Divisible 时间限制:1000MS 内存限制:65535K 题型: 编程题 语言: 无限制 Description Given n + m integers, I1,I2,. ...
- Android ImageButton图像灰色边框
灰色边框,是imageButton空间自带的. 第一种解决方案: android:scaleType="fitXY"//这个代码是:拉伸图片(不按比例)以填充的长宽.所以图像最后最 ...
- Git指令总结和图表
Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone g ...
- MIT jos 6.828 Fall 2014 训练记录(lab 2)
注: 源代码参见我的github:https://github.com/YaoZengzeng/jos Part1 : Physical Page Management mem_init函数: /*该 ...
- Unity原厂讲师大解密
Asset Bundle工作流程及人物换装实例- 刘刚 Unity内部的资源有两种 Resources:有10年历史,尽量用资产包 Asset Bundle:昵称AB,现今Unity处理资源的中心 A ...
- Unity制作FPS Demo
等到把这个Unity FPS Demo[僵尸杀手]完成后再详细补充一下,使用Unity制作FPS游戏的经历,今天做个标识.