2011-09-06 39 views
0

我正在使用以下代碼在asp.net4.0中驗證XML與XSD。在asp.net4.0中驗證XML與XSD的關係

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; 
    } 

這個函數總是返回我這就是無效有效的XML,XSD也。
PLZ建議是怎麼回事錯在這裏...

+0

您正在使用古老的技術。不要使用'XmlTextReader'或'XmlValidatingReader'。請參閱顯示過時的[documentation](http://msdn.microsoft.com/zh-cn/library/system.xml.xmlvalidatingreader.aspx)。 –

回答

0

它看起來像你的處理程序總是被調用,所有的處理程序是遞增錯誤計數。所以ErrorsCount將始終> 0,並且您的方法將始終返回false。

或者我錯過了什麼?