.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‎ > ‎