如何从相互引用的 XML 标签创建 Java 对象?

2023-12-14

我有一个 XML,其中包含与从 XML 创建的三种类型的 Java 对象相对应的标签。对象的形式如下:

A
- static Map<String, A>
- String name
- String aInfo1
- String aInfo2

B
- static Map<String, B>
- String name
- String bInfo1
- String bInfo2

C
- A aObject
- B bObject

现在,在我的 XML 中,我定义了 A 对象和 B 对象的标签列表,然后定义了 C 对象的标签,它们使用名称字段引用 A 和 B 对象。 我有两个要求:

  1. 从 XML 读取 A 和 B 对象时填充 A 和 B 中的静态映射。这些映射将分别包含 A.name 到 A 和 B.name 到 B 的映射。
  2. 通过从 XML 标记读取 A.name 和 B.name,然后使用 A 和 B 对象中定义的映射来填充 C 对象。

我读过一些 Java 框架(如 JAXB),但我无法想出一种方法来从 XML 创建此类对象。 Java 中是否有一个框架可以开箱即用或用最少的逻辑来完成此操作?

Edit:

还有一个要求: 我需要定义以下形式的 D 和 E 对象

D
- Map<A, E>

我定义 E 对象的方式与在 web.xml 中定义 servlet 的方式类似,即首先定义 E 类的名称和类,然后在其他地方使用 E 的名称。另外,传递参数来实例化E对象。该标签看起来像:

<E>
    <name>queryProcessor</name>
    <class>com.mydomain.QueryProcessor</class>
</E>

现在,在 D 中定义 Map 的内容时将使用它

<D>
    <map>
        <A>name_of_some_A_object</A>
        <E name="queryProcessor">
            <param1>name_of_some_B_object</param1>
            <param2>name_of_some_B_object</param2>
        </E>
        <A>name_of_some_A_object</A>
        <E name="queryProcessor">
            <param1>name_of_some_B_object</param1>
            <param2>name_of_some_B_object</param2>
        </E>
     </map>
 </D>

本质上,D 中的映射将通过实例化基类型 E 的类(将参数传递给它)和 A 的对象(通过其名称引用)来填充。


  • 使用 XSD 指定正确的 XML 格式
  • 生成 JAXB 类

(如果您熟悉 JAXB 注释并且想要使用 Java 而不是 XSD 控制接口,您也可以以相反的方式执行此操作)。

注意:静态地图很可能不是您想要使用的。如果您详细解释您想要解决的问题,我们也许可以为您指出一些替代方法

Edit:

你说的是XML的格式吗?或者为什么我需要 XML?我需要 XML 来使我的应用程序能够在 Java 之外进行配置。

看起来你正在重新发明轮子。看一下 Spring,看看它是否满足您的需求。如果没有,请解释原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从相互引用的 XML 标签创建 Java 对象? 的相关文章

随机推荐