C# 中的 Jaxb 等效项

Posted

技术标签:

【中文标题】C# 中的 Jaxb 等效项【英文标题】:Jaxb equivalent in C# 【发布时间】:2010-10-20 09:47:40 【问题描述】:

在 Java 中使用 JAXB 很容易从 xml 模式文件生成一组 Java 类,符合该模式的 xml 可以反序列化为。

是否有一些 C# 等效于 JAXB?我知道 Linq 可以序列化和反序列化与 xml 文件之间的类。但是如何从 xml 模式文件生成 C# 类,然后将这些类与 linq 一起使用?

【问题讨论】:

【参考方案1】:

如果您使用的是 Visual Studio, 试试XML Schema Definition Tool。它采用您的模式定义并生成 C# 类——或者它可以采用另一种方式并从类中生成模式定义。它还有许多其他与 XML 相关的转换。

【讨论】:

实际上,XSD 可以在 C#、VB.NET、JScript 或 C++ 中生成类。请参阅 /language 开关。 对不起,我不是故意暗示它不能。他的问题只涉及 C# 类。但是,是的,/language 开关很方便。 您不必拥有 Visual Studio。 XSD.EXE 是 .NET SDK 的一部分。【参考方案2】:

微软有一个更好的工具,叫做XsdObjectGen,XSD 对象代码生成器。它类似于 xsd.exe,但更好。同样免费,它不是 .NET SDK 的一部分,但需要单独下载。

另见 SO 问题:XSDObjectGen vs Xsd.exe

【讨论】:

【参考方案3】:

研究使用 DataSet。这与使用“Java Beans”有点不同。整个 XML 文档都被视为一个类中的分层表集。好的部分是 OOP 的封装理论实际上得到了执行。哇,Microsoft 做对了 Sun 拒绝的事情。

无论如何。如果您想让事情变得更有趣,您还可以查看类型化的 DataSet。我已在重大项目中使用它并取得了巨大成功。

【讨论】:

以上是关于C# 中的 Jaxb 等效项的主要内容,如果未能解决你的问题,请参考以下文章

从 xsd 生成 c++ 类的 JAXB 等效项?

c# listview 大图标显示时,项中的标签文本居中显示怎么设置?

C# 中的 Java Map 等效项

C# 中的 DWORD 和 VARTYPE 等效项

JavaScript 中的 C# 字典等效项

C# 中的 HashSet 是不是有等效的 AddRange