C# ve .net 3.5 kullanma Ben içeren bir şemaya karşı bir xml belgesini doğrulamaya çalışıyorum. > xmldocument ve iç içe geçmiş şemalar
another.xsd içerir another.xsd - -şemaları ve orada içermektedir
Şema1.xsd aşağıdaki gibidir> içerir i Schema1 eklemeye çalıştığınızda
base.xsd. XmlDocument için xsd aşağıdaki hatayı alıyorum.
'YesNoType' yazılmamış veya basit bir tür değil.
Schema1.xsd şemasını yüklediğimde base.xsd dosyası eklenmediğinden bu hatayı alıyorum.
XmlSchemaSet sınıfını kullanmaya çalışıyorum ve XmlResolver uri'yi şemaların konumuna ayarlıyorum.
NOT: Tüm şemalar aynı dizin E altında yaşamak: \ Dev \ Ana \ XmlSchemas
İşte kod olan
string schemaPath = "E:\\Dev\\Main\\XmlSchemas";
XmlDocument xmlDocSchema = new XmlDocument();
XmlSchemaSet s = new XmlSchemaSet();
XmlUrlResolver resolver = new XmlUrlResolver();
Uri baseUri = new Uri(schemaPath);
resolver.ResolveUri(null, schemaPath);
s.XmlResolver = resolver;
s.Add(null, XmlReader.Create(new System.IO.StreamReader(schemaPath + "\\Schema1.xsd"), new XmlReaderSettings { ValidationType = ValidationType.Schema, XmlResolver = resolver }, new Uri(schemaPath).ToString()));
xmlDocSchema.Schemas.Add(s);
ValidationEventHandler valEventHandler = new ValidationEventHandler
(ValidateNinoDobEvent);
try
{
xmlDocSchema.LoadXml(xml);
xmlDocSchema.Validate(valEventHandler);
}
catch (XmlSchemaValidationException xmlValidationError)
{
// need to interogate the Validation Exception, for possible further
// processing.
string message = xmlValidationError.Message;
return false;
}
herkes karşı bir XmlDocument doğrulamaya ilişkin doğru yönde işaret edebilir iç içe içeren şema içerir. Ne yapmanız gereken şemaları birleştirmek olduğunu düşünüyorum
BTW, C# .NET diye bir şey yoktur –