gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 01:56:42 24 4
gpt4 key购买 nike

我有一个 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 中填充静态 map 。这些映射将分别包含 A.name 到 A 和 B.name 到 B 的映射。
  2. 通过从 XML 标记中读取 A.name 和 B.name 然后使用 A 和 B 对象中定义的映射来填充 C 对象。

我已经阅读了一些 Java 框架,例如 JAXB,但我无法想出一种方法来从我的 XML 创建此类对象。 Java 中是否有一个框架可以开箱即用或使用最少的逻辑来执行此操作?

编辑:

还有一个要求:我需要定义形式为 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 来控制接口(interface),您也可以采用相反的方法)。

注意:静态 map 很可能不是您想要使用的。如果您详细说明要解决的问题,我们可能会为您指出一些替代方法

编辑:

Are you talking about the format of the XML? Or why I need XML at all? I need XML for the ability to make my applications configurable outside of Java.

看来您是在重新发明轮子。查看 Spring,看看它是否符合您的需求。如果没有,请解释原因。

关于java - 如何从相互引用的 XML 标记创建 Java 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8358791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com