XML2Java映射 - 处理继承

时间:2016-04-27 14:12:41

标签: java xml binding

我在论文中遇到过问题,希望有人可以帮助我。问题如下,我正在处理一个大型源代码(一个已经建立的库),并希望通过input.xml文件的规范对某些类进行一些xml绑定。以下是一部分代码的结构示例:

interface IObject extends Writeable, PrimitiveSinkable{
   //methods, fields...
}
interface IMessage extends IObject{
//methods, fields....
}

interface IRequestMessage extends IMessage, IObject{
//methods, fields...
}

class RequestMessageVer10 implements IRequestMessage{
//methods, fields....
}

class RequestMessageVer11 implements IRequestMessage{
//methods, fields....
}

所以,我想要的是通过一个input.xml文件从接口IRequestMessage映射到正确的类通过version属性,这里是假装xml的一个例子:

<requestmessage version=10>
//other fields...
</requestmessage>
<requestmessage version=11>
</requestmessage>

有可能实现这一目标吗?如果是这样,怎么样?另外,我怎么能绕过它?

最诚挚的问候,

Diogo Duarte

1 个答案:

答案 0 :(得分:0)

假设您已经解析了xml文件并且拥有包含该信息的版本变量,您可以像这样使用Class.forName(String)

IRequestMessage message = (IRequestMessage)Class.forName("RequestMessageVer"+version).newInstance();

如果需要将参数传递给类构造函数,可以找到特定的构造函数并使用它。下面是一个示例,它找到RequestMessageVer11类构造函数,该构造函数将String和Integer作为参数:

IRequestMessage message = (IRequestMessage)Class.forName("RequestMessageVer"+version).getConstructor(String.class, Integer.class).newInstance("String parameter", 42);

如果您需要解析XML文件,我建议使用简单的tutorial

希望这有帮助。