2010-12-28 11 views
0

私はXSDファイルを持っており、私はこれから自分のXMLをチェックしたいと思っています。どうすればいい?少し早いですがお礼を !XMLスキーマからXMLを制御する方法は?

XmlTextWriter objX = new XmlTextWriter(context.Response.OutputStream, Encoding.UTF8); 

    objX.WriteStartDocument(); 

    objX.WriteStartElement("MerchantItems"); 
    objX.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9"); 
+2

を始めるために '新しいてXmlTextWriterを()'を使用しないでください、実施例ではありません。 .NET 2.0以降、非推奨になりました。代わりに 'XmlWriter.Create()'を使用してください。 –

答えて

0

xmlファイル全体を最初に書き込むことをお勧めします。その後、XmlSchemaクラスを使用して作成したxmlドキュメントを検証できます。私はあなたがファイルを書く過程にいる間、それをどうやって行うのか分かりません。

+0

私はすでにXMLを作成しました。 – ozkank

+0

おそらくジョンですが、ここでの主な問題は、XMLドキュメントの出力を出力ストリームに直接書き込んだり、ドキュメントが出力される前にドキュメントを検証する機会がないことだと思います。 – Brian

+0

あなたは正しいです。検証オプションは 'XmlWriterSettings'ではなく' XmlReaderSettings'にあります。コメントは削除されました。 –

1

このlinkは役に立ちました。

using System.Xml;  // for XmlTextReader and XmlValidatingReader 
using System.Xml.Schema; // for XmlSchemaCollection (which is used later) 

internal class Program 
{ 
    private static 
     bool isValid = true; // If a validation error occurs, 
          // set this flag to false in the 
          // validation event handler. 

    private static void Main(string[] args) 
    { 
     XmlReaderSettings xrs = new XmlReaderSettings(); 
     xrs.ValidationType = ValidationType.Schema; 
     xrs.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation; 
     xrs.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings; 
     xrs.ValidationEventHandler += MyValidationEventHandler; 

     XmlReader r = XmlReader.Create("<path to xml>", xrs); 

     while (r.Read()) 
     { 
      // Can add code here to process the content. 
     } 

     r.Close(); 

     // Check whether the document is valid or invalid. 
     Console.WriteLine(isValid ? "Document is valid" : "Document is invalid"); 

     Console.In.ReadLine(); 
    } 

    public static void MyValidationEventHandler(object sender, 
               ValidationEventArgs args) 
    { 
     Console.Out.WriteLine("Validation {1}: {0}", args.Message, args.Severity); 
     isValid = false; 
    } 
} 

I:ここで

は、XMLドキュメントをロードし、関連付けられたスキーマに対してそれを検証し、そのリンクからいくつかのconsoildatedコードです(あなたは自分のXML文書が正しくスキーマを参照していることを確認する必要があります)お役に立てれば!

+1

-1: 'new XmlTextReader()'を使わないでください。 'XmlReader.Create()'を使用する –

+0

@JohはXmlTextReader.Create()を使用するように修正しました! – pmartin

+1

あなたはまだ 'XmlValidatingReader'を使っていますので、' XmlTextReader.Create'ではなく 'XmlReader.Create'を使うべきです。 –

1

このようなものを試してみてください。

これは単に何かあなたが

 using(MemoryStream ms = new MemoryStream()) 
     using(XmlWriter w = XmlWriter.Create(ms, null)) 
     { 
      // ... WRITE DOCUMENT HERE ... 
      XmlDocument x = new XmlDocument(); 
      x.Load(ms); 
      x.Validate(eventHandlerForSchema); 
     } 
+1

-1: 'new XmlTextWriter()'は使用しないでください。代わりに 'XmlWriter.Create()'を使用してください。 –

+0

あなたが正しいです、代わりに 'XmlWriter.Create()'を使用するように私の答えを変更しました。 – Brian