我正在使用以下代码在asp.net4.0中针对XSD验证XML。
static int ErrorsCount = 0;
public static void ValidationHandler(object sender, ValidationEventArgs args)
{
//ErrorMessage = ErrorMessage + args.Message + "\r\n";
ErrorsCount++;
}
public bool validate(String xml)
{
XmlTextReader tr = null;
XmlSchemaCollection xsc = null;
XmlValidatingReader vr = null;
string XSDLocation = string.Empty;
xsc = new XmlSchemaCollection();
XSDLocation = "D:\\PENN Universal Gateway\\Penn.Common.Shared\\Schema\\s2sPlayer.xsd");
tr = new XmlTextReader(XSDLocation);
xsc.Add(null, tr);
vr = new XmlValidatingReader(xml.ToString(), XmlNodeType.Document, null);
vr.Schemas.Add(xsc);
vr.ValidationType = ValidationType.Schema;
vr.ValidationEventHandler -= new ValidationEventHandler(ValidationHandler);
vr.ValidationEventHandler += new ValidationEventHandler(ValidationHandler);
while (vr.Read()) ;
vr.Close();
if (ErrorsCount > 0)
{
return false;
}
return true;
}
此函数始终返回 False ,这对于有效的XML,XSD也无效。
PLZ表明这里出了什么问题...
答案 0 :(得分:0)
看起来总是调用您的处理程序,并且所有处理程序都会增加错误计数。所以ErrorsCount将永远是> 0并且您的方法将始终返回false。
或者我错过了什么?