Java 绑定(bind)与手动定义类

标签 java xml binding

我有一个 XML 模式,需要为其创建 Java 类。它不是一个特别大的模式,我想它会产生大约 20 个类。我正在权衡是使用自动绑定(bind)程序(如 JAXB 或 JiBX 中提供的程序)还是手动编写我自己的类并使用 XStream 之类的东西进行编码/解码。

与使用绑定(bind)程序相比,编写自己的类有哪些优点/缺点。

此外,我使用一个绑定(bind)程序,我是否永远与它绑定(bind)在一起。例如,如果我使用 JAXB 的绑定(bind)编译器来创建类,是否必须使用 JAXB 进行所有编码/解码?

附注我已经看到以下有关 XML 绑定(bind)/序列化的问题,这些问题很有用,但没有完全回答我的问题: xml-serialization-in-javajava-xml-binding

最佳答案

我认为您的问题没有明确的答案。但我可以给你一些来之不易的建议。以下是一些需要考虑的事项:

  1. 编写编码和解码代码非常耗时,尤其是第一次。

  2. 您将不得不花费大量时间来了解 DOM 库(Xerces 或其等效工具)的细微差别。

  3. 有很多重复,因此您最终会被迫编写一些辅助类。

  4. 您将需要进行大量单元测试,以确保您涵盖了可选元素和属性领域的所有基础。

查看该列表,很容易说“这就是 JAXB 为我所做的”。我为此做了很多年,我会说 JAXB 为您节省了大量时间和精力,尤其是 Java 5/6 中 JAXB 的最新迭代。

但是,如果您使用 JAXB,我们已经学到了一个教训,我想传递给您:

*** 不要让 JAXB 生成的类泄漏到您的应用程序中。

正如您在问题中所说,这将您的整个应用程序与 JAXB 的工作方式联系在一起。如果必须更换 JAXB(您将来可能会这样做的原因有很多),那么您将面临一项具有挑战性和痛苦的任务(相信我,我们已经做到了,我们永远不会陷入困境)再次定位)。

现在我们总是将 JAXB 生成的类隐藏在外观或工厂后面,从 JAXB 类映射到我们自己的具有所需行为的域 POJO。我们将 JAXB 视为 JDBC; JAXB 只是另一个数据源,是从我们的域 POJO 获取数据的另一种方式。域 POJO 是秘诀,我们控制它们的编码方式和使用方式。 JAXB 只是一个用于编码和解码的工具。

关于Java 绑定(bind)与手动定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/261603/

相关文章:

Java servlets,将文本文件中的数据写入网页

xml - VB.NET XML 文字中的换行符

c# - 解析大型 xml 文件以在元素之间添加新行真的很慢

java - Android 验证签名总是返回 false

java - 更新 ArrayAdapter 中的数据

java - 当没有强大的网络时,Android RactiveNetwork 崩溃应用程序

java - 如何从现有构建器节点构建新的文档构建器?

angular - 向 Angular router.navigate 添加参数

qt - 如何在 Vala 中使用 Qt GUI?

c# - WPF:通过绑定(bind)获取对象(从转换器获得)属性