当您可以使用 XDocument 时,为什么要使用 xsd.exe 工具为 XSD 架构创建类,然后使用序列化程序创建 XML 文件。
我是否应该始终使用
XDocument
并通过嵌套 XElement
元素手动创建 XML 文档,还是有一些我没有看到的东西可以使使用 XSD 模式和 XmlSerializer
变得更好。
XDocument
和 XmlSerializer
/xsd.exe
对于不同类型的事物很有用。
当您处理大型 XML 文档时,您确实应该有一个 XSD 架构。这是各方就 XML 文档的结构应该是什么、它具有哪些属性/子项/数据类型等达成的协议。
如果您有 XSD,那么您不妨使用它来生成 C# 类。您可以手写
XDocument
代码,但随后您需要不断参考XSD以查看您应该访问哪些属性/子项,以及它们的数据类型是什么。如果 XSD 发生更改,您必须手动搜索 XDocument
代码以查找需要更改的内容。
如果您生成 C# 类,那么您可以访问的属性及其数据类型就位于类型系统中。如果 XSD 发生更改,您可以重新生成 C# 类,并在需要更改的地方获取编译器错误。
如果您有 XSD,您还应该验证您收到的 XML 文档是否与该 XSD 匹配,请参阅例如这个答案。
但是,有时您需要使用其他人的 XML 文档,并且要么没有 XSD,要么生成的 C# 类比您需要的复杂得多。或者有时您只是做一些非常简单的事情,不值得编写 XSD。或者有时 XML 会做一些非常烦人的事情,不能很好地映射到 C# 类。在这些情况下,使用
XDocument
通常是更好的选择。