gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:51:37 25 4
gpt4 key购买 nike

    <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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com