在两个不同的JAVA包下使用相同对象的xml?
我有多个带有类似JAXB JAVA对象的包。java对象是从不同的XSD自动生成的,似乎具有相似的结构,但我不能假设没有差异,也不能将两个相似的XML文档封送到相同的java类,尽管它们有很多相似之处
我试图找到一种减少代码重复的方法,在从相似的对象但不同的包中获取数据时,不要为每个具有相同对象的包再次编写相同的代码
public void function1(JAXBElement documentJAXB)
{
ObjType obj = new ObjType ();
// parse the document
path.to.package1.Document doc = (path.to.package1.Document) documentJAXB.getValue();
obj.setMsgid(doc.getFIToFIPmtStsRpt().getGrpHdr().getMsgId());
obj.setCredtm(Util.getSqlDate(doc.getFIToFIPmtStsRpt().getGrpHdr().getCreDtTm()));
....
}
第二个函数将相同的行为应用于package2
下的类似对象
public void function2(JAXBElement documentJAXB)
{
ObjType obj = new ObjType ();
// parse the document
path.to.package2.Document doc = (path.to.package2.Document) documentJAXB.getValue();
obj.setMsgid(doc.getFIToFIPmtStsRpt().getGrpHdr().getMsgId());
obj.setCredtm(Util.getSqlDate(doc.getFIToFIPmtStsRpt().getGrpHdr().getCreDtTm()));
....
}
有没有办法把这些代码结合起来?我想到了泛型,但它无法编译函数调用getFIToFIPmtStsRpt
,例如,因为这些类没有实现接口
有没有办法动态定义包名
# 1 楼答案
也许可以使用JAXB绑定文件将生成的XSD的一部分生成到特定的包中
下面显示了从命名空间到包的绑定。根据xsd结构的不同,您可能需要选择不同的内容(complextype、element等)