验证XML反对在C#中嵌入的XSD [英] Validating an XML against an embedded XSD in C#

查看:203
本文介绍了验证XML反对在C#中嵌入的XSD的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用下面的MSDN文档我验证对架构的XML文件:的 http://msdn.microsoft.com/en-us/library/8f0h7att%28v=vs.100%29.aspx



这只要XML包含模式位置或联架构的参考工作正常。是否有可能以嵌入架构硬编码到应用程序,即XSD不会驻留作为文件并且因此XML不需要引用它



我说的是这样的:




  1. 加载XML进行验证(无架构位置)

  2. 加载XSD作为资源或任何

  3. 请确认。


解决方案

试试这个:

 流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:

  1. Load XML to be validated (without schema location).
  2. Load XSD as a resource or whatever.
  3. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆