考虑使用 JAXB 构建这个 xml msg:
<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>
我们现有的遗留实现为每个标签都有一个单独的类,即 Msg、Database、Table、Row 和 Column。没有通用的基类。每个类都有一个 List/ArrayList、一个无参数构造函数,以及用于 @XmlAttribute 和 List 添加的其他设置器。
尝试应用复合模式(其他模式建议?),因为所有这些类几乎都是节点(带有子节点),但具有自己的相应属性。提出一个通用的基类
class Node<X> extends ArrayList<X>
但不知道如何从子类中将 @XmlElement(name ="depends_on_subclass") 应用于基类。除非在子类中并在虚拟 getSelf() 方法上添加 @XmlElement,例如在 Table 中,
class Table extends Node<Row>
{
@XmlElement(name="row")
public Table getSelf()
{
return this;
}
:
:
还有其他或更好的建议吗?提前致谢。