2016-04-27 145 views
0

我在论文期间遇到了一个问题,我希望有人能帮助我。问题在于,我正在处理一个大的源代码(一个已经创建的库),并希望通过input.xml文件的规范来对某些类执行一些xml绑定。这里有一个例子如何代码的一部分结构:XML2Java映射 - 处理继承

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向右类映射,在这里是假装的XML的一个例子:

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

是否有可能实现这一目标?如果是这样,怎么样?别的,我怎么能绕过它?

最好的问候,

迪奥戈·杜阿尔特

+0

只是有点迂腐,但类实现接口。 – gfelisberto

+0

你是对的!没有看到错误,谢谢 –

+0

我不确定你想要达到什么目的。我假设你有配置的xml,并想创建在那里声明的类的实例。是吗? – gfelisberto

回答

0

假设你已经在解析XML文件,并有该信息的版本变量,您可以使用Class.forName(String)这样的:

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

如果您需要将参数传递给类构造函数,您可以找到一个特定的构造函数并使用它。下面是发现RequestMessageVer11类构造函数需要一个字符串和一个整数作为参数的例子:

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

如果您需要解析XML文件,我推荐一个简单的tutorial

希望这会有所帮助。

+0

我认为你错过了这一点。我没有解析XML文件。我想要的是解析并映射到相应的类。 –