如何验证XmlSerializer的输出?

时间:2010-03-09 09:37:07

标签: c# validation schema serialization xmlserializer

在C#/ .NET 2.0中,当我serialize使用XmlSerializer对象时,根据XML模式验证输出的最简单方法是什么?

问题是用XmlSerializer编写无效的XML太容易了,我找不到一种方法来验证看起来不麻烦的XML。理想情况下,我希望在XmlSerializer中设置模式,或者让XmlWriter验证。

2 个答案:

答案 0 :(得分:4)

如何使用验证阅读器再次阅读

这是一个快速刺伤

Stream stream = new MemoryStream(Encoding.UTF8.GetBytes("<YourXml />"));
var input = mappingAssembly.GetManifestResourceStream(
            "MySchema.xsd"
            ); //This could be whatever resource your schema is           
var schemas = new XmlSchemaSet();            
schemas.Add(
   "urn:YourSchemaUrn",
   XmlReader.Create(
      input
      )
 );

var settings = new XmlReaderSettings
                           {
                               ValidationType = ValidationType.Schema,
                               Schemas = schemas
                           };

settings.ValidationEventHandler += MakeAHandlerToHandleAnyErrors;

var reader = XmlReader.Create(stream, settings);
while (reader.Read()) {} //Makes it read to the end, therefore validates

当出现错误时,您需要有一些处理程序来执行某些操作。

答案 1 :(得分:0)

您可以使用XmlReader根据XSD架构验证XML文件。