C#xsdファイルを使用してXML形式が正しいかどうかを検証する方法

2530 ワード

この例では、xsdファイルを使用してXMLフォーマットが正しいかどうかを検証するC#の実装方法について説明します.皆さんの参考にしてください.具体的には以下の通りです.

//  xmlDocument
XmlDocument doc = new XmlDocument();
//       
doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", null));
//        KYTResults
XmlElement results = doc.CreateElement("KYTResults");
//   ResultsStatus
XmlNode resultsStatus = doc.CreateElement("ResultsStatus");
//  Level
XmlElement element = doc.CreateElement("Level");
element.InnerText = status ? "0" : "1";
resultsStatus.AppendChild(element);
//  Description
element = doc.CreateElement("Description");
element.InnerText = msg;
resultsStatus.AppendChild(element);
//  PassKey                
element = doc.CreateElement("PassKey");
element.InnerText = key;
resultsStatus.AppendChild(element);
results.AppendChild(resultsStatus);
//END    ResultsStatus
//   DataList     
if (status)
{
  results.AppendChild(dataList);
}
//END         KYTResults
doc.AppendChild(results);
string path = Server.MapPath("/ws/xsd/ReceiveReturn.xsd");
//  xml         xsd  
string error = "";
//  XmlSchema
XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add("", XmlReader.Create(path));
//        
ValidationEventHandler eventHandler = new ValidationEventHandler(delegate(object sender, ValidationEventArgs e) {
  switch (e.Severity)
  {
   case XmlSeverityType.Error:
    error += e.Message;
    break;
   case XmlSeverityType.Warning:
    break;
  }
});
doc.Schemas = schemas;
//  xml
doc.Validate(eventHandler);
//                   
if (!"".Equals(error))
{
  throw new Exception(error);
}

PS:ここでは、より実用的なxml関連のオンラインツールをいくつか提供します.
オンラインXMLフォーマット/圧縮ツール:http://tools.jb51.net/code/xmlformat
オンラインXML/JSON相互変換ツール:http://tools.jb51.net/code/xmljson
XMLオンライン圧縮/フォーマットツール:http://tools.jb51.net/code/xml_format_compress
XMLコードオンラインフォーマット美化ツール:http://tools.jb51.net/code/xmlcodeformat
C#に関する詳細については、「C#中XMLファイル操作テクニック要約」、「C#よくあるコントロール使用方法チュートリアル」、「C#プログラム設計のスレッド使用テクニック総括」、「WinFormコントロール使用方法総括」、「C#データ構造とアルゴリズムチュートリアル」、「C#配列操作テクニック総括」および「C#オブジェクト向けプログラム設計入門チュートリアル」のトピックを参照してください.
本稿で述べたことが皆さんのC#プログラム設計に役立つことを願っています.