在asp.net4.0中验证针对XSD的XML

时间:2011-09-06 09:56:53

标签: xml xsd

我正在使用以下代码在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表明这里出了什么问题...

1 个答案:

答案 0 :(得分:0)

看起来总是调用您的处理程序,并且所有处理程序都会增加错误计数。所以ErrorsCount将永远是> 0并且您的方法将始终返回false。

或者我错过了什么?