从 XSD 文件生成 XmlSchemaSet

Generating XmlSchemaSet from XSD file

提问人:Jimbo1999 提问时间:9/11/2023 更新时间:9/11/2023 访问量:41

问:

政府制定了用于传输数据的 XML 文件规范,并提供了一个 XSD 文件。我已经成功地使用它创建了一个类(使用 xsd.exe)以允许我创建确认规范的 XML 文件,但现在我正在尝试做相反的事情并读取 XML 文件进行处理。我想根据 XSD 验证任何传入的文件,然后,如果成功,将数据导入到对象中以在应用程序中使用。理想情况下,我会使用 XmlSchemaSet 和关联的类在内存中与客户提供的 XML 文件一起执行此操作。

我读过的大多数架构验证示例都要求在运行时从磁盘加载 XSD 文件,但由于架构是静态的,我希望以类似于使用 XSD.exe 生成的类的方式将其编译到软件中,并避免磁盘读取。是否有类似的工具用于生成生成合适的 XmlSchemaSet(以及相应的 XmlSchema、XmlSchemaElements 等)的代码?从理论上讲,我可以手动完成,但需要几天时间,而且我可能会在某个地方出错。另外,我不想每次更新 XSD 时都重做它!

当然,我可能错过了显而易见的东西,并且有一种更好的方法可以实现这一目标。我正在使用 .NET 6.0。

C# XML XSD 验证

评论

0赞 jdweng 9/11/2023
XML 文件应由文件创建者验证,而不是由用户验证。架构是XML格式,可以由任何xml库读取。将架构编译到项目中确实没有意义,因为它将来可能会更改。
0赞 dbc 9/12/2023
您可以将 XSD 作为一个巨大的字符串文本嵌入到代码中。但是,不建议这样做。一个更传统的做法是使 XSD 成为嵌入式资源。例如,请参阅将(嵌入式资源)架构添加到 XmlReaderSettings 而不是 Filename?
0赞 mamift 9/12/2023
“生成合适的 XmlSchemaSet”是什么意思?我认为创建 XmlSchemaSet 实例是一项非常简单的任务,不需要生成代码。也许发布一些你想要的示例代码将有助于澄清这个问题。
0赞 Jimbo1999 9/12/2023
@jdweng XML 文件本身是由其他系统生成的,我们希望在尝试导入它们之前确保它们符合标准架构。
0赞 Jimbo1999 9/12/2023
@dbc嵌入式资源看起来很有前途,我会试一试。谢谢!

答: 暂无答案