删除/替换/合并从 XStream 中的父列表<>对象生成的标记



我正在使用XStream将java对象转换为XML对应物。

一个这样的对象包含一个List<Window> windows变量,该变量在生成时显示:

<windows>
    <Window>
                  <WindowType>Monthly</WindowType>
                  <WindowBegin>
                    <Month>null</Month>
                    <Day>null</Day>
                  </WindowBegin>
                  <WindowEnd>
                    <Month>null</Month>
                    <Day>null</Day>
                  </WindowEnd>
    </Window>
    <Window>
    ....
    </Window>
</windows>

我想知道是否可以阻止生成 List<> 父标签,如下所示:

        <Window>
                      <WindowType>Monthly</WindowType>
                      <WindowBegin>
                        <Month>null</Month>
                        <Day>null</Day>
                      </WindowBegin>
                      <WindowEnd>
                        <Month>null</Month>
                        <Day>null</Day>
                      </WindowEnd>
        </Window>
        <Window>
        ....
        </Window>

此问题使用 string.replace,但如果此列表位于需要清理的另一个对象中,这将在 xml 中留下空白。速度是重中之重,因此如果可能的话,我一直在 XStream 本身中寻找一种方法。

谢谢

可能没有正确表达问题,但我找到的解决方案(通过 XStream)并没有完全删除标签,而是使用隐式命名将父标签与其子标签组合在一起。感谢@Blaise Doughan为此提供的出色教程。

例)

列表窗口;将序列化为:

<windows>
    <Window>
                  <WindowType>Monthly</WindowType>
                  <WindowBegin>
                    <Month>null</Month>
                    <Day>null</Day>
                  </WindowBegin>
                  <WindowEnd>
                    <Month>null</Month>
                    <Day>null</Day>
                  </WindowEnd>
    </Window>
    <Window>
    ....
    </Window>
</windows>

但添加:

@XStreamImplicit(itemFieldName="Window")
List<Window> windows;

将序列化为:

        <Window>
                      <WindowType>Monthly</WindowType>
                      <WindowBegin>
                        <Month>null</Month>
                        <Day>null</Day>
                      </WindowBegin>
                      <WindowEnd>
                        <Month>null</Month>
                        <Day>null</Day>
                      </WindowEnd>
        </Window>
        <Window>
        ....
        </Window>

最新更新