简体   繁体   English

在C#中使用xsd验证xml,并将无效数据替换为空值

[英]Validate xml with xsd in C# and replace invalid data with null value

如何使用C#使用.xsd文件验证.xml文件中的数据并将无效数据替换为空值?

Look at the XmlSchemaValidator class . 查看XmlSchemaValidator类 While it's not easy to use, it is very powerful. 虽然不容易使用,但功能非常强大。

It works via a "push" model. 它通过“推”模型工作。 The API informs you what kind of XML would be valid at the current point in the validation. API会通知您当前在验证中哪种XML有效。 You then supply a valid piece of XML (element, attribute, etc), and ask again, what would be valid now . 然后,您提供的XML(元素,属性等)的有效部分,并再次问, 现在将是有效的。 I have used this to create sample XML that conforms to a set of schemas. 我使用它来创建符合一组模式的示例XML。

Although I haven't tried it, I suppose you could feed your input XML to the validator, then pass some "empty" XML once you reach an invalid point in the parse. 尽管我还没有尝试过,但是我想您可以将输入的XML传递给验证器,然后在解析中到达无效点时传递一些“空” XML。

In .NET 3.5 to validate just use the following code 在.NET 3.5中验证只需使用以下代码

    public bool Validate(XmlReader xmlInput, XmlReader schemaDocument)
    {
        var xmlSchemaSet = new XmlSchemaSet();
        xmlSchemaSet.Add("", schemaDocument);
        try
        {
            var doc = XDocument.Load(xmlInput);
            bool valid = true;
            doc.Validate(xmlSchemaSet, (o, e) =>
            {
                valid = false;
            });
            return valid;
        }
        catch (Exception e)
        {
            return false;
        }
    }

but to correct your document, you should use XmlReader's methods and custom verification, I consider. 但是我认为,为了更正文档,您应该使用XmlReader的方法和自定义验证。

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

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