Este es el código que pueden encontrar en el ejemplo dado por microsoft
// Create the XmlSchemaSet class. XmlSchemaSet sc = new XmlSchemaSet(); // Add the schema to the collection. sc.Add("urn:bookstore-schema", "books.xsd"); // Set the validation settings. XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationType = ValidationType.Schema; settings.Schemas = sc; settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack); // Create the XmlReader object. XmlReader reader = XmlReader.Create("booksSchemaFail.xml", settings); // Parse the file. while (reader.Read());
Este código me da un error al leer mi xml:
- Codificación Unicode, usando XMLParseContext puedes solucionar este problema, referencia.
Una vez que se usa Unicode sale un error al leer el xml
- Error Message: Data at the root level is invalid. Line 1, position 1.
Para solucionar el problema use el siguiente código.XmlReaderSettings settings = new XmlReaderSettings();settings.ValidationType = ValidationType.Schema;sc.Add("urn:bookstore-schema", "books.xsd");settings.IgnoreWhitespace = true;settings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings;settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);using(StreamReader sr = new StreamReader("booksSchemaFail.xml")){using(XmlReader reader = XmlReader.Create(new StringReader(sr.ReadToEnd()),settings)){while (reader.Read());}}