如何序列化实现相同接口的不同对象

时间:2019-06-21 11:38:01

标签: java xml interface

我想在xml中保留菜单配置。所以我想出了这个:

它看起来像一个文件夹和文件机制。动作是一个简单的动作,动作组由动作和动作组组成,但是可选的。

一些规则: 1-我必须服从命令。这就是为什么我不能为动作和动作组使用不同的列表的原因。

2-这不是规则,但我不想限制菜单的深度。

这是课程:

Interaction ActionItem:

    public interface ActionItem {
    }

具体类别的操作:

    public class Action implements ActionItem {
        private String id;
    }

具体类ActionGroup:

    public class ActionGroup implements ActionItem {
        private String id;
        private List<ActionItem> actions;
    }

和菜单类:

    public class Menu {
        private List<ActionItem> actions;
    }

但是我不能在XStream中用它创建一个简单的xml。应该有一种方式可以说Action是XStream的ActionItem,但我找不到它。其实我对工具没有限制。如果可以用JAXB完成,我可以使用它。

我只想要一个这样的简单结构:

<Menu>
    <ActionGroup>
         <Action/>
         <Action/>
         <ActionGroup>
              <Action/>
              <Action/>
              <ActionGroup>
                  <Action/>
                  <Action/>
              </ActionGroup>
         </ActionGroup>
         <Action/>
         <ActionGroup>
              <Action/>
              <Action/>
         </ActionGroup>
    </ActionGroup>
</Menu>

这是我通过XStream获得的:

<MenuConf>
  <actions>
    <ActionGroup>
      <id>Planning</id>
      <actions>
        <Action>
          <id>/Planning/A</id>
        </Action>
        <Action>
          <id>/Planning/B</id>
        </Action>
        <Action>
          <id>/Planning/C</id>
        </Action>
      </actions>
    </ActionGroup>
  </actions>
</MenuConf>

是否有摆脱“动作”标签的方法?

0 个答案:

没有答案