验证XML反对在C#中嵌入的XSD [英] Validating an XML against an embedded XSD in C#
本文介绍了验证XML反对在C#中嵌入的XSD的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用下面的MSDN文档我验证对架构的XML文件:的 http://msdn.microsoft.com/en-us/library/8f0h7att%28v=vs.100%29.aspx
这只要XML包含模式位置或联架构的参考工作正常。是否有可能以嵌入架构硬编码到应用程序,即XSD不会驻留作为文件并且因此XML不需要引用它
我说的是这样的:
- 加载XML进行验证(无架构位置)
- 加载XSD作为资源或任何
- 请确认。
解决方案
试试这个:
流objStream = objFile.PostedFile.InputStream;
// Open XML文档
XmlTextReader的xtrFile = XmlTextReader的新(objStream);
//创建验证
使用XmlValidatingReader xvrValidator =新使用XmlValidatingReader(xtrFile);
xvrValidator.ValidationType = ValidationType.Schema;
//以验证
XmlSchemaCollection中xscSchema添加XSD =新XmlSchemaCollection中();
xscSchema.Add(XXXXX,使用Server.Mappath(@/ ZZZ / XSD / yyyyy.xsd));
xvrValidator.Schemas.Add(xscSchema);
试
{
,而(xvrValidator.Read())
{
}
}
赶上(异常前)
{
//关于审定
错误}
Using the following MSDN documentation I validate an XML file against a schema: http://msdn.microsoft.com/en-us/library/8f0h7att%28v=vs.100%29.aspx
This works fine as long as the XML contains a reference to the schema location or the inline schema. Is it possible to embed the schema "hard-coded" into the application, i.e. the XSD won't reside as a file and thus the XML does not need to reference it?
I'm talking about something like:
- Load XML to be validated (without schema location).
- Load XSD as a resource or whatever.
- Do the validation.
解决方案
Try this:
Stream objStream = objFile.PostedFile.InputStream;
// Open XML file
XmlTextReader xtrFile = new XmlTextReader(objStream);
// Create validator
XmlValidatingReader xvrValidator = new XmlValidatingReader(xtrFile);
xvrValidator.ValidationType = ValidationType.Schema;
// Add XSD to validator
XmlSchemaCollection xscSchema = new XmlSchemaCollection();
xscSchema.Add("xxxxx", Server.MapPath(@"/zzz/XSD/yyyyy.xsd"));
xvrValidator.Schemas.Add(xscSchema);
try
{
while (xvrValidator.Read())
{
}
}
catch (Exception ex)
{
// Error on validation
}
这篇关于验证XML反对在C#中嵌入的XSD的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文