繁体   English   中英

在C#中使用xsd验证xml文件。它实际验证多少?

[英]validate xml file using xsd in C#.. How much does it actually validate?

一直在尝试为我的xml文件创建一个验证器。 我使用了在此站点上可以找到的其他一些示例(例如, 如何验证XML文档? )。

我只是没有看到它按我期望的方式工作。 实际验证了什么?

几乎无论我在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;
        }                        
    }
}

验证事件处理程序的代码丢失。

看我的工作代码有一点不同我有这个

settings.ValidationFlags = XmlSchemaValidationFlags.ProcessInlineSchema | XmlSchemaValidationFlags.ReportValidationFlags;

忘记了为什么我必须添加它。

首先要做的是确保触发了事件处理程序,之后这可能是xsd的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM