在 C#/.NET 2.0 中,当我使用XmlSerializer序列化对象时,根据 XML 模式验证输出的最简单方法是什么?
问题是使用 XmlSerializer 编写无效 XML 太容易了,而且我找不到一种方法来验证看起来不麻烦的 XML。理想情况下,我希望在 XmlSerializer 中设置架构或拥有一个验证的 XmlWriter。
在 C#/.NET 2.0 中,当我使用XmlSerializer序列化对象时,根据 XML 模式验证输出的最简单方法是什么?
问题是使用 XmlSerializer 编写无效 XML 太容易了,而且我找不到一种方法来验证看起来不麻烦的 XML。理想情况下,我希望在 XmlSerializer 中设置架构或拥有一个验证的 XmlWriter。
使用验证阅读器再次阅读它怎么样?
这是一个快速的尝试
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
当出现错误时,您需要一些处理程序来执行某些操作。
您可以使用XmlReader根据 XSD 架构验证 XML 文件。