c# XML Schema validation

evilthoutz

New Member
I have a nice XML file like this:\[code\] <?xml version="1.0" encoding="utf-8" ?> <Assets Path="C:\Users\r3plica\Google Drive"> <Assetd> <FileName>Boomerang - Error codes.xlsx</FileName> <DisplayName>Boomerang - Error codes</DisplayName> <Description>This is the Boomerang error codes file</Description> <Tags> <Tag>Excel</Tag> <Tag>Boomerang</Tag> </Tags> <Categories> <Category>1</Category> <Category>4</Category> </Categories> </Assetd> <Asset> <FileName>Issue Tracker v5.xlsx</FileName> <Description>This is the issue tracker for Skipstone</Description> <Tags> <Tag>Excel</Tag> <Tag>Skipstone</Tag> </Tags> <Categories> <Category>1</Category> <Category>4</Category> </Categories> </Asset> </Assets>\[/code\]and then I have my schema which I created like this:\[code\] <?xml version="1.0" encoding="utf-8"?> <xs:schema id="data" targetNamespace="http://tempuri.org/data.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/data.xsd" xmlns:mstns="http://tempuri.org/data.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" > <xs:element name="Assets"> <xs:complexType> <xs:sequence> <xs:element name="Asset" type="Asset" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="Asset"> <xs:sequence> <xs:element name="FileName" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="DisplayName" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Description" type="xs:string" minOccurs="0" maxOccurs="1" /> <xs:element name="Tags" type="Tags" minOccurs="0" maxOccurs="1" /> <xs:element name="Categories" type="Categories" minOccurs="1" maxOccurs="1" /> </xs:sequence> </xs:complexType> <xs:complexType name="Tags"> <xs:sequence> <xs:element name="Tag" type="xs:string" minOccurs="1" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:complexType name="Categories"> <xs:sequence> <xs:element name="Category" type="xs:int" minOccurs="1" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:schema>\[/code\]As far as I can see looking at that, the xml file is invalid because the first element is Assetd and not Asset, but if I run my c# code:\[code\]XmlSchemaSet schemas = new XmlSchemaSet();schemas.Add("http://tempuri.org/data.xsd", "data.xsd");XDocument doc = XDocument.Load(openFileDialog1.FileName);string msg = "";doc.Validate(schemas, (o, err) =>{ msg = err.Message;});Console.WriteLine(msg == "" ? "Document is valid" : "Document invalid: " + msg);\[/code\]it tells me the xml is valid...If I use this code:\[code\]// Set the validation settings.XmlReaderSettings settings = new XmlReaderSettings();settings.ValidationType = ValidationType.Schema;settings.Schemas.Add("http://tempuri.org/data.xsd", "data.xsd");settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);// Create the XmlReader object.XmlReader reader = XmlReader.Create(openFileDialog1.FileName, settings);// Parse the file. while (reader.Read()) ;\[/code\]I get this output in the console:\[code\]Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Assets'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the attribute 'Path'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Assetd'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'FileName'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'DisplayName'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Description'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Tags'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Tag'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Tag'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Categories'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Category'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Category'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Asset'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'FileName'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Description'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Tags'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Tag'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Tag'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Categories'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Category'.Warning: Matching schema not found. No validation occurred. Could not find schema information for the element 'Category'.\[/code\]Can anyone tell me what I am doing wrong please? It is killing me :(cheers,/r3plica
 
Back
Top