如何引用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的需求不大(都是一些很 ...
随机推荐
- Android Studio调试功能使用总结【转】
Android Studio调试功能使用总结[转] 这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此. 先编译好要调试的程序. 1.设置断点 选定要设置断点的代码 ...
- 调用手机话费充值API的SDK编写思路
思路 通过将SDK方法中返回的数据划分为正常返回数据以及错误返回的数据两部分,让调用者更简单的对接口调用错误进行处理. 将SDK调用第三方服务接口的流程划分为: 数据准备,http请求,结果处理三部分 ...
- java 字节流和字符流的区别 转载
转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不 ...
- Elastic search入门
首先是下载elasticsearch https://www.elastic.co/downloads,解压: 然后下载了中文分析器ik,github上搜索elasticsearch-ik就能找到,h ...
- 边工作边刷题:70天一遍leetcode: day 86-1
Find Median from Data Stream 要点: 基本框架:两个heap:large,small把所有数二分.一个新的element.目标:维持heap中的元素个数相同.错误理解:新元 ...
- UESTC 876 爱管闲事 --DP
题意:即求给定n个数字(a1,a2,……an),不改变序列,分成M份,使每一份和的乘积最大. 思路:dp[i][j]表示把前i个数字,分成j份所能得到的最大乘积. 转移方程:dp[i][j] = ma ...
- HDU 2082 找单词 --生成函数
跟上题是一个思路:http://www.cnblogs.com/whatbeg/p/3728545.html 只不过是上一题的扩展. 代码: #include <iostream> #in ...
- Android代码优化----PullToRefresh+universal-image-loader实现从网络获取数据并刷新
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- NGUI3.x Button事件
代码调用事件 UI搭建 1.首先创建一个Button,和一个的GameObeject命名为GUIClikEvent 2.方法一:创建一个NGUIClickTest.cs,绑定在Button上 Clic ...
- NGUI学习笔记汇总
NGUI学习笔记汇总,适用于NGUI2.x,NGUI3.x 一.NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加 ...