【发布时间】:2012-03-23 13:38:08
【问题描述】:
一直在尝试为我的 xml 文件制作验证器。我使用了可以在该站点上找到的其他一些示例(例如 How to validate an XML document?)。
我只是没有看到它按我预期的方式工作。真正得到验证的是什么?
几乎无论我在 xml 文件中进行什么更改,验证器都将其视为错误。我认为验证器会查看 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]:stackoverflow.com/questions/9806346/…
标签: c# xml validation xsd