Anywhere you go, let me go too

關於部落格
對人海闊天空,做事仔細周密
----------------------
因為改了平台後...覺得不是很好用....所以有另外......(評估中)
http://blog.xuite.net/king119wang/myskills
  • 32543

    累積人氣

  • 2

    今日人氣

    0

    訂閱人氣

How to convert xml to xsd in .NET

後來讓我爬到下面這篇文章
http://www.dotblogs.com.tw/yc421206/archive/2011/03/07/21710.aspx

它介紹的算蠻詳細的,重點在MS 提供的xsd.exe程式如何運用
(不同OS存放路徑不同)
x64:C:Program Files (x86)Microsoft Visual Studio 8SDKv2.0Bin

x86:C:Program FilesMicrosoft Visual Studio 8SDKv2.0Bin

(1)轉xml to xsd

xsd D:skillRq_907100.xml /O:D:skill
在Dos mode 執行完,會產製一個xsd檔在d:skill路徑下
-------------------------------------------------
但這個檔C#是無法直接呼叫的,所以要把xsd轉成c#看得懂的cs檔
(2)轉xsd to C# 成Class

xsd D:skillRq_907100.xsd /c /O:D:skill
--------------------------------------------------
xsd參數運用請參考:
http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.71).aspx
----------------------------------------

產製出來的c#程式預設 都是以陣列來當作物件的回傳/設定值;
因為我的電文是只需傳送一次,所以就自行改成單一物件

略~
 

  private SvcRq Rq907100Field;

    

    /// <remarks/>

    /// 設定SvcRq
    [System.Xml.Serialization.XmlElementAttribute("Rq")]

    public SvcRq setRq907100

    {

        get {

            return this.Rq907100Field;

        }

        set {

            this.Rq907100Field = value;

        }

    }

略~


有了這個class檔後,就可以呼叫它,直接用塞值的方式將Tag的內容填完

(3)將class物件轉成待傳送的xml檔
 
 要用到 System.Xml  和 System.Xml.Serialization;

  轉換程式如下

 XmlSerializer xml = new XmlSerializer(objSrcRq.GetType());
 Stream newStream = new FileStream("907100.xml", FileMode.Create, FileAccess.Write, FileShare.None);
                xml.Serialize(newStream, objSrcRq);
                newStream.Close();
===>因為這樣產製的結果不會自動補encoding 屬性,
    個人覺得加上這個屬性,可以方便自己未來Debug,所以加了下面轉換程式
 
                //加入encoding字眼
                XmlDocument doc = new XmlDocument();
 
                doc.Load("907100.xml");
                if (doc.FirstChild.NodeType == XmlNodeType.XmlDeclaration) {
                    XmlDeclaration xmlDec = (XmlDeclaration)doc.FirstChild;
                    xmlDec.Encoding = "UTF-8";
                }
 
                RqXML = doc.InnerXml;
 
                doc.Save("907100.xml");
==============================
換成這種方式開發的好處,就是不用做組字串的苦工了^^
 
 


 

 

 

相簿設定
標籤設定
相簿狀態