【发布时间】:2012-12-20 01:25:49
【问题描述】:
我有一个 Write 方法可以序列化使用 XmlAttributes 的对象。这是相当标准的:
private bool WriteXml(DirectoryInfo dir)
{
var xml = new XmlSerializer(typeof (Composite));
_filename = Path.Combine(dir.FullName, _composite.Symbol + ".xml");
using (var xmlFile = File.Create(_filename))
{
xml.Serialize(xmlFile, _composite);
}
return true;
}
除了尝试读取我刚刚写出的文件(使用模式验证器)之外,我可以在写入 XML 的同时执行 XSD 验证吗?
我可以在将内存流写入磁盘之前对其进行处理,但在 .Net 中似乎通常有一种解决大多数问题的优雅方法。
【问题讨论】:
-
不要在问题的标题中添加标签。请参阅meta.stackexchange.com/questions/19190/… 了解更多信息。
-
XML 序列化器不是已经生成兼容的 XML 了吗?再次检查有什么意义?
-
针对在业务的不同部分之间共享的 XSD。我想知道我是否更改了代码中的某些内容,我并没有违反 XSD 规则。
-
所以,实际上,这是一个自动集成测试,当代码更改时,您只需针对生成的 XML 运行一次。
-
部分是的,但是 XSD 内部有限制,比如某些字符串的正则表达式等。我宁愿不复制这些检查代码,尤其是因为 XSD 将来可能会改变。除非有人总是记得检查代码,否则它可能会失败。这不会那么糟糕,除非我需要立即知道是否发生了故障,而不是稍后其他人阅读它时。