0

我正在使用 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 内部寻找一种方法。

谢谢

4

1 回答 1

0

可能我没有正确表达问题,但我找到的解决方案(通过 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>
于 2012-05-24T14:41:58.577 回答