代码之家  ›  专栏  ›  技术社区  ›  Tim Jansen

如何验证XmlSerializer的输出?

  •  6
  • Tim Jansen  · 技术社区  · 14 年前

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

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

    2 回复  |  直到 14 年前
        1
  •  4
  •   Mark Dickinson    14 年前

    用验证读卡器再次读取它怎么样

    这是一个快速刺穿它

    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
    

    当出现错误时,您需要有一些处理程序来做一些事情。

        2
  •  0
  •   Darin Dimitrov    14 年前

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