java - 如何使用XStream反序列化?

标签 java serialization deserialization xstream xml-deserialization

    <PlayListSettings>
        <PlayList>
          <id>PlayList1</Name>
          <File class="string">/mnt/sdcard/Video1</File>
        </PlayList>
     </PlayListSettings>

这是我的序列化 xml,其中 File 是字符串数组列表。我可以使用 xstream.aliasSystemAttribute(null, "class"); 删除 class="string";

 and the output is 
<PlayListSettings>
        <PlayList>
          <id>PlayList1</Name>
          <File>/mnt/sdcard/Video1</File>
        </PlayList>
     </PlayListSettings>

如何使用 XStream 反序列化?

最佳答案

您可以使用@XStreamImplicit注释。这是一个完整的工作示例:

@XStreamAlias("PlayList")
public final class PlayList {
    @XStreamImplicit(itemFieldName = "File")
    private final List<String> files = new ArrayList<>();

    public void addFile(final String file) {
        checkFile(file);
        files.add(file);
    }

    public void removeFile(final String file) {
        checkFile(file);
        files.remove(file);
    }

    public List<String> getFiles() {
        return Collections.unmodifiableList(files);
    }

    private void checkFile(final String file) {
        if (file == null) {
            throw new NullPointerException();
        } else if (file.isEmpty()) {
            throw new IllegalArgumentException("is empty");
        }
    }

    public static void main(String[] args) {
        final PlayList playList = new PlayList();
        playList.addFile("Foo");
        playList.addFile("Bar");

        // Serialize
        final XStream xstream = new XStream();
        xstream.autodetectAnnotations(true);
        final String xml = xstream.toXML(playList);
        System.out.println(xml);

        // Deserialize
        final PlayList playList2 = (PlayList) xstream.fromXML(xml);
        for (final String file : playList.getFiles()) {
            System.out.println(file);
        }
    }
}

输出如下:

<PlayList>
  <File>Foo</File>
  <File>Bar</File>
</PlayList>

关于java - 如何使用XStream反序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23244383/

相关文章:

java - 将数据从 C 传递到 Java

serialization - Doctrine 数组列与自定义序列化相比的优点?

django - 测试 drf serializer validate 的最佳方法是什么

java - 具有相同serialversionuid的不同类

java - 更改类名会影响 Java 反序列化吗?

java - android应用程序中的序列化和反序列化

java - 以编程方式为 SQS 设置 AWS 区域

java - 如何获取系统数据并使我的应用程序针对操作系统独一无二

从 jar 文件夹加载 Java rxtxSerial.dll

c# - asp.net 中 DateTime 的 Javascript 序列化没有提供 javascript 日期对象?