【发布时间】:2012-04-01 18:12:23
【问题描述】:
我正在使用多个XElement 对象为我的库中的多个对象提供一些用户指定的数据。我试图避免指定整个 XML 文件的结构,因为该库不应该关心整个 XML 的外观,只要它所需的特定元素结构正确。
为此,我有 3 个单独的 XSD 文件,它们为我的班级需要的 3 个 XElements 中的每一个定义架构,但是我在验证 XElement 与架构时遇到了一些问题。如果没有变通方法,似乎没有一种方法可以做到这一点。
从 MSDN 页面中,XElement.Validate() 扩展方法似乎适用于重新验证较大文件的子元素。 XmlSchemaObject 参数导致了我的问题,因为我不能假设它会出现在任何 XElements 中。我想我可以通过从我的XmlSchemaSet 中获取XmlSchemaElement 作为XmlSchemaObject 参数传递来解决这个问题,但是由于XmlSchemaSet 已经定义了所有内容,因此必须这样做似乎很奇怪。
在不首先验证整个 XDocument 的情况下验证带有架构的 XElement 是否有更好的选择?
或者我应该让业务层处理应用程序中的模式验证,并让库假设 XElement 格式正确(我考虑过这个选项,但作为个人偏好,我更愿意避免抛出异常,宁愿只是通过返回参数让调用方法知道XElement无效)。
【问题讨论】:
标签: c# xml xsd linq-to-xml