.NET 3.5 provided LINQ to XML framework. Here is the page for tips. Updated: 3/9/2012 IndexHow can I see XmlReader content?When you do the XML validation using XmlReader, I wanted to see where the validation failed. Here is the routine to put in while (reader.Read()) routine: void Print(XmlReader r) { if (r.NodeType.ToString() == "Whitespace") // this is needed to ignore return; Console.Write(r.NodeType.ToString().PadRight(17, '-')); Console.Write("> ".PadRight(r.Depth * 3)); switch (r.NodeType) { case XmlNodeType.Element: case XmlNodeType.EndElement: Console.WriteLine(r.Name); break; case XmlNodeType.Text: case XmlNodeType.CDATA: case XmlNodeType.Comment: case XmlNodeType.XmlDeclaration: Console.WriteLine(r.Value); break; case XmlNodeType.DocumentType: Console.WriteLine(r.Name + " - " + r.Value); break; default: break; } }You will do like the following: XmlReader reader = null; XmlReaderSettings settings = new XmlReaderSettings(); XmlSchemaSet schemaSet = new XmlSchemaSet(); schemaSet.Add(schema); settings.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler); settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings; // settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema; // settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation; settings.ValidationType = ValidationType.Schema; settings.Schemas = schemaSet; reader = XmlReader.Create(xmlPath, settings); this.xmlDataIsValid = true; // handler will set the value while (reader.Read()) { Print(reader); if (!xmlDataIsValid) break; } reader.Close(); where private void ValidationEventHandler(object sender, ValidationEventArgs args) { if (args.Severity == XmlSeverityType.Error) { xmlDataIsValid = false; // set the flag and other things can be done here. } } |
Programming‎ > ‎