Home
Browse all 647 examples
Download all 647 examples
Download sample chapters
Reviews
Errata
Acknowledgments
Links on .NET
Paradoxal Press

Buy directly from Paradoxal Press at $33.99 (Save 43%)



Category: Programming
Level: Beginner to seasoned
900 pages
ISBN-10 097661322-0
ISBN-13 978-097661322-0
$59.99 USA
$79.99 CANADA


Listing 21-5 extracted from chapter XML


Listing 21-4<     > Listing 21-6


This listing can be compiled with the command line:
csc.exe /target:exe Example_21_5.cs
Errors: 0 Warnings: 0


Example_21_5.cs
using System;
using System.Xml;
using System.Xml.Schema;
class Program {
   static void Main() {
      XmlReaderSettings settings = new XmlReaderSettings();
      settings.Schemas.Add( String.Empty, 
                            @"C:\books.xsd");
      settings.Schemas.Compile();
      settings.ValidationType = ValidationType.Schema;
      settings.ValidationEventHandler += ValidatingProblemHandler;
      settings.ValidationFlags = 
              XmlSchemaValidationFlags.ReportValidationWarnings;
      XmlReader xtr = XmlReader.Create(@"C:\books.xml",settings);
      string sIndent = string.Empty;
      string sElem = string.Empty;
      while ( xtr.Read() ) {
         if ( xtr.NodeType == XmlNodeType.Element ) {
            sIndent = string.Empty;
            for (int = 0; i < xtr.Depth; i++) sIndent += "   ";
            sElem = xtr.Name;
            if ( xtr.MoveToFirstAttribute() )
               do
                  Console.WriteLine("{0}{1} Attr:{2}" ,
                                    sIndent , sElem , xtr.Value );
               while ( xtr.MoveToNextAttribute() );
         }
         else if (xtr.NodeType == XmlNodeType.Text)
            Console.WriteLine("{0}{1} Val:{2}",sIndent,sElem,xtr.Value);
      }
   }
   static void ValidatingProblemHandler(object sender, 
                                        ValidationEventArgs e) {
      if (e.Severity == XmlSeverityType.Warning) {
         Console.Write("WARNING: ");  Console.WriteLine(e.Message);
      else if (e.Severity == XmlSeverityType.Error) {
         Console.Write("ERROR: ");    Console.WriteLine(e.Message);
      }
   }
}	
Copyright Patrick Smacchia 2006 2007