【发布时间】:2017-11-26 21:26:33
【问题描述】:
我正在开发一个带有 XSD 文件的 XML 验证器。必须使用任何 XSD 文件验证 XML,这意味着必须将 XSD 模式添加到 XML 文件中,但当然必须首先从 XML 中删除模式(如果存在)。 我的解决方法:
-我正在通过递归成功地从 XML 文件中删除架构。
-我已成功将 XSD 架构添加到 XML。
我遇到的问题是验证:
XDocument doc = XDocument.Load(filename);
/* 递归添加/删除模式 */
doc.Save("temp.xml");
using (XmlReader reader = XmlReader.Create("temp.xml", settings))
doc = XDocument.Load(reader, LoadOptions.SetLineInfo);
我使用 XmlReader 而不是 .Validate() 方法的原因是我需要突出显示实际的错误行,而 .Validate() 方法不会从 ValidationEventHandler 异常中返回 LineNumber。
是否有另一种方法可以更改 XML 的架构,并且仍然通过行验证它而不将新的 xml 保存到临时文件?
【问题讨论】:
标签: c# xml validation xsd linq-to-xml