0
一直在試圖爲我的xml文件做一個驗證器。我已經使用了本網站上的其他一些示例(如How to validate an XML document?)。使用C#中的xsd驗證xml文件..它實際驗證多少?
我只是沒有看到它按我期望的方式工作。什麼實際上得到驗證?
幾乎不管我在xml文件中改變了什麼,驗證器dosent都認爲它是一個錯誤。我認爲驗證器會查看xml文件是否包含未在xsd中定義的元素。驗證程序僅捕獲正常的xml語法錯誤。
那麼,如果它沒有影響,使用xsd有什麼意義呢?
我的驗證
string xsd_file = "Message.xsd";
XmlSchema xsd = new XmlSchema();
xsd.SourceUri = xsd_file;
XmlSchemaSet ss = new XmlSchemaSet();
ss.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler);
ss.Add(null, xsd_file);
if (ss.Count > 0)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(ss);
settings.Schemas.Compile();
settings.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler);
XmlTextReader r = new XmlTextReader(filepath);
using (XmlReader reader = XmlReader.Create(r, settings))
{
try
{
while (reader.Read())
{
}
}
catch (XmlException ex)
{
throw;
}
}
}
看看這個[SO帖子和回覆] [1]。它詳細解釋瞭如何進行驗證。 [1]:http://stackoverflow.com/questions/9806346/single-pass-read-and-validate-xml-vs-referenced-xsd-in-c-sharp – 2012-03-23 15:54:13