gpt4 book ai didi

java - 使用 JAXB 注释应用复合模式的最佳方法?

转载 作者:行者123 更新时间:2023-12-01 05:14:17 28 4
gpt4 key购买 nike

考虑使用 JAXB 构建此 xml 消息:

<msg>
<database id="111">
<table name="t1" pkCol="id">
<row op="update">
<col name="id" value="12345"/>
<col name="age" value="30"/>
<col name="name" value="John"/>
</row>
<row ...>
</row>
</table>
<table ...>
:
</table>
</database>
<database ...>
<table ...>
</table>
</database>
</msg>

我们现有的遗留实现为每个标签都有一个单独的类,即消息、数据库、表、行和列。没有公共(public)基类。每个类都有一个 List/ArrayList、一个无参数构造函数,以及用于 @XmlAttribute 和 List 添加的其他 setter 。

尝试应用复合模式(其他模式建议?),因为所有这些类几乎都是节点(带有子节点),并且具有自己相应的属性。提出一个共同的基类

class Node<X> extends ArrayList<X>

但不知道如何从子类中将 @XmlElement(name ="depends_on_subclass") 应用到基类上。除非在子类中并在虚拟 getSelf() 方法上添加 @XmlElement,例如在表中,

class Table extends Node<Row>
{

@XmlElement(name="row")
public Table getSelf()
{
return this;
}
:
:

还有其他更好的建议吗?提前致谢。

最佳答案

我假设您为此使用 xjc,在这种情况下您可以使用 jaxb 插件

我用过这个插件http://confluence.highsource.org/display/J2B/Inheritance+plugin

然后将类似的内容添加到您的 xml 中。就是这样。他们将扩展给定的基类。

<xsd:element name="attributesRequest">
<xsd:annotation>
<xsd:appinfo>
<inheritance:extends>com.work.autofill.common.Filter</inheritance:extends>
</xsd:appinfo>
</xsd:annotation>

关于java - 使用 JAXB 注释应用复合模式的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11532623/

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