如何引用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的需求不大(都是一些很 ...
随机推荐
- C++ new(3)
转载自:http://www.builder.com.cn/2008/0104/696370.shtml “new”是C++的一个关键字,同时也是操作符.关于new的话题非常多,因为它确实比较复杂,也 ...
- 1.NopCommerce下载与安装
NoCommerce是基于微软ASP.NET MVC + EntityFramework 技术开发的一套开源电子商城系统,其架构与设计非常精妙被誉为.NET商城的经典之作. 作为一个.NET程序爱好者 ...
- hdu-5521 Meeting(最短路)
题目链接: Meeting Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...
- 如何解决inline-block元素的空白间距
早上在博客中有人提了这样一个问题:“li元素inline-block横向排列,出现了未知间隙”,我相信大家在写页面的时候都遇到过这样的情况吧. 我一般遇到这情况都会把li浮动起来,这样就没有间隙.但是 ...
- 你知道的display的值有多少?用了多少?
它的语法如下: display:none | inline | block | list-item | inline-block | table | inline-table | table-capt ...
- 2014 Super Training #7 B Continuous Login --二分
原题:ZOJ 3768 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3768 一个结论:一个正整数总能用不超过三个前n项相 ...
- 数据结构Java实现04----循环链表、仿真链表
单向循环链表 双向循环链表 仿真链表 一.单向循环链表: 1.概念: 单向循环链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针不再是结束标记,而是指向整个链表的第一个结点,从而使单链表形 ...
- 为Unity项目生成文档(二)
Unity项目生成文档 接着上篇文章:为Unity项目生成文档(一) .Net项目可在VS配置XML 我们可以在VS中通过配置来生成xml文件,但是unity的project,就算同样配置了xml文档 ...
- Android 距离传感器修复 修复打电话黑屏 无法快速唤醒屏幕的BUG
接触Android Xposed开发也很久了,学了这么久的Java,也该弄点东西出来了, public ProximitySensor(Context paramContext, AudioModeP ...
- BZOJ 3572: [Hnoi2014]世界树
BZOJ 3572: [Hnoi2014]世界树 标签(空格分隔): OI-BZOJ OI-虚数 OI-树形dp OI-倍增 Time Limit: 20 Sec Memory Limit: 512 ...