【发布时间】:2013-07-21 23:48:27
【问题描述】:
我有一个 Xml 架构 CustomerData.xsd,我使用 Microsoft 的 xsd.exe 创建类 CustomerData。
我的程序读入一个 Xml 文件,使用 XmlSerializer 获取 CustomerData 的实例,使用以下代码:
XmlSerializer serializer = new XmlSerializer(typeof(CustomerData));
TextReader textReader = new StreamReader(fileName);
CustomerData customerData = (CustomerData)serializer.Deserialize(textReader);
textReader.Close();
当我的程序运行时,customerData 可以修改,并且根据架构,某些值可能无效。
在用户将此数据保存回文件之前,我希望能够对其进行验证。如何在保存前验证数据?
注意 - 我将架构编译为嵌入式资源,因此我可以使用如下代码来访问架构:
Assembly myAssembly = typeof(CustomerData).Assembly;
Stream schemaStream = myAssembly.GetManifestResourceStream(schemaResourceName);
我也知道如何制作验证 SchemaReader:
XmlReader schemaReader = XmlReader.Create(schemaStream);
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add(null, schemaReader);
settings.ValidationType = ValidationType.Schema;
我只是不知道下一步该做什么。
【问题讨论】:
标签: c# validation xsd xmlserializer xmlreader