2013年8月20日 星期二

C# 如何使用XSD (XML Schema Definition)驗證XML內容

from http://www.dotblogs.com.tw/ken12/archive/2012/04/10/71392.aspx


STEP 1. 從應用程式執行 "Visual Studio 命令提示字元 (2010)"
此步驟或許需系統管理員身份執行, 以確保權限足夠.



STEP 2. 建立XML檔
建立待轉換的XML檔內容, 檔名為Query.xml, 存至C:\
<?xml version="1.0" encoding="UTF-8" ?>
<Root>
    <Data>
        <MerchantID></MerchantID>
        <MerchantTradeNo></MerchantTradeNo>
        <QueryDate></QueryDate>
    </Data>
</Root>



STEP 3. 將XML檔轉換成XSD檔
執行以下指令, 假設XML檔名為Query.xml
xsd C:\Query.xml /O:C:\
將xml檔轉換成xsd檔, 並儲存在C:\.

XSD參數運用請參考:
http://msdn.microsoft.com/zh-tw/library/x6c1kb0s(v=VS.80).aspx



STEP 4. 修改XSD檔, 以符合格式驗證要求
產生的Query.xsd檔內容如下.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Root" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="Root" msdata:IsDataSet="true" msdata:Locale="en-US">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Data">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="MerchantID" type="xs:string" minOccurs="0" />
              <xs:element name="MerchantTradeNo" type="xs:string" minOccurs="0" />
              <xs:element name="QueryDate" type="xs:string" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>



STEP 7. 透過XDocument驗證XML內容
使用XDocument需要加入以下的Namespace.
using System.Xml.Schema;
using System.Xml.Linq;

透過try catch可確認是否驗證失敗
try
{
    XDocument xDoc = XDocument.Parse("需驗證的XMLData String");
    XmlSchemaSet schemas = new XmlSchemaSet();
    schemas.Add(string.Empty, "xsd位置");
    xDoc.Validate(schemas, null);
}
catch (Exception)
{
    return false;
}
null的部份可以改為使用Lambda Expression取得, 如下.
(o, e) =>{
    Console.WriteLine(e.Message);
}

2013年8月3日 星期六

解決 win7 無法輸入中文的問題


莫名其妙不能輸入中文,好像是防毒檔太兇了

以下是解決win7 無法輸入問題的方法

解決方法:
1.點選開始功能表,在「開始搜尋」的輸入框中輸入"regedit"並執行
2.找到 "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"
3.此行是在開機的時候應該自動執行的程式清單,右邊的欄位應該要有ctfmon字串值,如果消失了代表問題就出在這裡
4.修正辦法為:在右邊欄位點選右鍵新增字串值"Ctfmon",然後再修改這個字串值的數值資料為 "C:\Windows\system32\ctfmon.exe" 完成後關閉。
5.接下來重新開機、登出再登入,或者直接手動執行 "C:\Windows\system32\ctfmon.exe" 以後開機語言列就會正常出現了。



from http://www.wretch.cc/blog/foxcoolaaa/12497152
 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template