XML通過XSD產生CLASS
步驟一:通過XML獲取XSD
格式:xsd "XML的完整路徑帶文件名" /O:"輸出路徑不帶文件名"。
C:\Windows\system32>xsd "D:\2 Queue_List\QueueList_request.xml" /O:"D:\2 Queue_List"
步驟二:通過XSD獲取Class
xsd file.xsd {/classes | /dataset} [/element:element] [/language:language] [/namespace:namespace] [/outputdir:directory] [URI:uri]
C:\Windows\system32>xsd /c "D:\2 Queue_List\QueueList_request.xsd" /O:"D:\2 Queue_List"
步驟三:通過Class獲取XML
注意推薦把產生的Class中的數組變成List方便使用。
寫XML幫助類
using System.IO;
using System.Text;
using System.Xml.Serialization; namespace XSD
{
/// <summary>
/// XmlHelper 的摘要描述
/// </summary>
public class XmlHelper
{
public XmlHelper()
{
//
// TODO: 在此加入建構函式的程式碼
//
} public string Serialize<T>(T dataToSerialize)
{
try
{
var serializer = new XmlSerializer(typeof(T));
//// 不聲明頭
//XmlWriterSettings settings = new XmlWriterSettings();
//settings.Indent = true;
//settings.NewLineChars = "";
////settings.Encoding = encoding;
////settings.IndentChars = " "; //// 不聲明頭
//settings.OmitXmlDeclaration = true; // 強制指定新的命名空間,這裡設置為空
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty); Utf8StringWriter stringwriter = new Utf8StringWriter();
serializer.Serialize(stringwriter, dataToSerialize, namespaces);
return stringwriter.ToString();
}
catch
{
throw;
}
} public T Deserialize<T>(string xmlText)
{
try
{
var stringReader = new System.IO.StringReader(xmlText);
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(stringReader);
}
catch
{
throw;
}
} public class Utf8StringWriter : StringWriter
{ public override Encoding Encoding
{
get
{
return Encoding.UTF8;
}
}
}
}
}
測試方法
using System;
using System.Collections.Generic;
using System.Text; namespace XSD
{
class Program
{
static void Main(string[] args)
{ Queue_List queueList = new Queue_List();
queueList.Items = new List<object>(); #region queueNumber
Queue_ListQueueNumber qn = new Queue_ListQueueNumber();
qn.queueDetails = new List<Queue_ListQueueNumberQueueDetails>();
//Queue_ListQueueNumberQueueDetails obj = new Queue_ListQueueNumberQueueDetails();
//obj.number = "1";
//qn.queueDetails.Add(obj);
qn.queueDetails.Add(new Queue_ListQueueNumberQueueDetails() { number = "" });
queueList.Items.Add(qn);
#endregion Queue_ListCategoryDetails bb = new Queue_ListCategoryDetails();
bb.subQueueInfoDetails = new List<Queue_ListCategoryDetailsSubQueueInfoDetails>();
//Queue_ListCategoryDetailsSubQueueInfoDetails b11 = new Queue_ListCategoryDetailsSubQueueInfoDetails();
//b11.identificationType = "C";
//b11.itemNumber = "1";
//bb.subQueueInfoDetails.Add(b11);
bb.subQueueInfoDetails.Add(new Queue_ListCategoryDetailsSubQueueInfoDetails() { identificationType = "C", itemNumber = "" });
queueList.Items.Add(bb); #region scanRange
Queue_ListScanRange cc = new Queue_ListScanRange();
cc.rangeQualifier = "";
cc.rangeDetails = new List<Queue_ListScanRangeRangeDetails>();
Queue_ListScanRangeRangeDetails c11 = new Queue_ListScanRangeRangeDetails();
c11.max = "";
c11.min = "";
cc.rangeDetails.Add(c11); queueList.Items.Add(cc);
#endregion //qn.queueDetails = new Queue_ListQueueNumberQueueDetails[1] {Queue_ListQueueNumberQueueDetails}; string strXml = new XmlHelper().Serialize(queueList); Console.WriteLine(strXml);
Console.Read();
}
}
}
XML通過XSD產生CLASS的更多相关文章
- 使用 FOR XML PATH 產生 XML 格式時,遇到 NULL 該如何處理?
當您嘗試利用 FOR XML PATH 產生 XML 格式時,若遇到 Result Set 為 Null 時,會導致整個查詢結果為 Null ,若您想要在查不到資料時,可以顯示自訂的內容,本文將提供可 ...
- Datagard產生gap
本文轉載自無雙的小寶的博客:http://www.cnblogs.com/sopost/archive/2010/09/11/2190085.html 有時候因為網路或備份故障等原因,主機所產生的歸檔 ...
- ASP.NET Web API 文件產生器 - 使用 Swagger
转帖:http://kevintsengtw.blogspot.hk/2015/12/aspnet-web-api-swagger.html Swagger 是一套 API 互動文件產生器,使用 HT ...
- COB Epoxy灌膠時氣泡產生的原因與解決方法
COB的黑膠 (Epoxy)有氣泡通常是不被允許的,因為外部氣孔不但會影響到外觀,內部氣孔更有可能會破壞 Wire bonding 的鋁線穩定度.既使在COB製程剛完成的時候沒有通過功能測試,也不代表 ...
- JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (3):部署設定及應用 (转帖)
說明:這一篇主要是說明如何將程式部署到Application Server,以及程式如何運作,產生的檔案置於何處,以及如何以瀏覽器呈現(Applet),或是當成桌面應用程式,或是 桌面Applet,這 ...
- JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (2):JavaFX建立及程式碼說明 (转帖)
說明:就如同標題一樣,前端會用到JavaFX.Swing.Java Web Start.Google Map 的技術, 後端就是JDBC.Servlet的技術,以及我們會簽署認證jar檔案,這樣才可存 ...
- JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (1):NetBeans 寫 Servlet (转帖)
JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (1):NetBeans 寫 Servlet 功能:這支程式的主要功能是將 javafx 與 swi ...
- C# 在執行程式目錄下產生文件夾
//產生一個Log文件夾string appPath = Application.StartupPath; if (!Directory.Exists(appPath + "/log&quo ...
- 在XML里的XSD和DTD以及standalone的使用2----具体使用详解
如何定义XSD并在XML中使用XSD 同时XSD可以对XML中的格式进行约束,当约束失败时给出提示. 下面以下使用VS2010为平台进行演示. 1.新建一个项目,然后在项目中添加xml架构文件(.xs ...
随机推荐
- Font Awesome字体图标
1.什么是字体图标字体图标是一个包含许多图标的字体库.可以理解为一种特殊的字体,只不过里面包含的都是图标. 2.Font Awesome图标字体库Font Awesome是目前最受欢迎最全面的图标字体 ...
- 【转载】写runat="server"有什么用
aspx运行时会被编译,其中没有runat="server"属性的html标签会被直接写入response,有runat="server"属性的html标签会转 ...
- String的compareTo()方法返回值
compareTo()的返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的 差值,如果第一个字符和参数的第一个字符相等,则以第二 ...
- 如何进行oracle capability i/o(压力测试数据库服务器i/o性能)
一 .oracle 有关 IO 信息的相关统计函数 Oracle i/o stack包含hbas,存储相关的交换机.存储物理磁盘.那么oracle建议在应用程序部署的时候,建议去验证i/o避免存在问题 ...
- R(五): R常用函数
工作笔记记录,会持续更新.... 目录: apply tapply lapply sapply merge substr.substring.strsplit.unlist.paste.paste0. ...
- mybatis insert前获取要插入的值
<insert id="insertRequestItem" parameterType="requestItemModel"> <selec ...
- Perl调用外部命令的方式和区别
主要的方式简述如下:1. system("command");使用该命令将开启一个子进程执行引号中的命令,父进程将等待子进程结束并继续执行下面的代码. 2. exec(" ...
- 安装配置Oracle数据库时的一些处理思路
配置Oralce客户端或者服务器端出现问题时,可考虑如下步骤: 1 检查如下文件:client端:D:\app\Administrator\product\11.2.0\client_3\networ ...
- Orcale(一)概念
一 . 基本概念 : 1. orcaleinstanceclient : orcale的客户端 ( 1. 中文乱码问题 : NLS_LANG=SIMPLIFIED CHINESE_CHINA.Z ...
- Android: 触屏fling/scroll/drag的区别及其详细过程
Google了一下,终于搞清了touch screen下的几种操作模式(对应的是事件). 对于一个view, 常用的操作有点击(click)和长按(long press)二种.实际上,这些操作类型是A ...