以下是我试图解开JAXB的一个例子:
<?xml version="1.0" encoding="UTF-8"?>
<menus>
<menu>
<name>main</name>
<subMenu>
<name>mainMenu</name>
<!-- Transfer / Versement -->
<subMenu>
<name>transfer</name>
<label>MENU_TRANSFER</label>
<icon>call-received</icon>
<menuItem>
<name>record</name>
<label>MENU_RECORD</label>
<url>/pages/record/search/recordListSearchResult.jsf</url>
</menuItem>
<menuItem>
<name>transferInput</name>
<label>MENU_TRANSFER_OPEN</label>
<url>/pages/transfer/open/transferListOpen.jsf</url>
</menuItem>
</subMenu>
</menu>
</menus>
一旦解组,使用java生成的代码,我希望能够检索menuItem的子菜单父级(无需使用循环等)。基本上,我想在MenuItem上生成一个getter getParent
返回他的家长。有一个简单的方法吗?
答案 0 :(得分:2)
解组后,您可以使用Unmarshal Event Callbacks在映射类的实例中接收父对象。要执行此操作,只需添加具有以下签名的方法:
void afterUnmarshal(Unmarshaller unmarshaller, Object parent);
因此,您将在解组后在子子菜单中获取父子菜单。
如果映射的类是模式派生的(例如,您使用XJC编译一些XML模式),则可以使用code injector plugin将代码添加到生成的类中。
我还认为应该有XJC插件来处理父对象(谷歌XJC或JAXB父插件)。