gpt4 book ai didi

java - Xstream 在未完成时停止写入文件

转载 作者:行者123 更新时间:2023-12-02 03:21:16 28 4
gpt4 key购买 nike

我已经编写了一些代码来为之前写入sql的用户生成密码。然后我想将每个用户的用户名和密码写入xml。该代码似乎工作正常,除了在大约第 200 个用户时它突然停止在 xml 标记中途并结束,这非常奇怪。我使用 Xstream 作为我的库。 Arraylist 有大约 215 个用户。

我尝试了 StaxDriver 和 DomDriver。 Stax Driver 结果与空的 Xstream 构造函数相同,但 Dom 更糟。

        XStream xstream = new XStream();
xstream.alias("Zakaznici", ListZakazniku.class);

try {
PrintWriter out = new PrintWriter("Zakaznici.xml");
out.write(xstream.toXML(ListZakazniku.zakaznici));
}catch (Exception e){
e.printStackTrace();
}
public class ListZakazniku {
public static ArrayList<Zakaznik> zakaznici = new ArrayList<>();

public ListZakazniku(){
zakaznici= new ArrayList<Zakaznik>();
}

public void setZakaznici(ArrayList<Zakaznik> zakaznik){
this.zakaznici.clear();
this.zakaznici = zakaznik;
}

public static ArrayList<Zakaznik> getZakaznici() {
return zakaznici;
}

public void add(Zakaznik elbow){
zakaznici.add(elbow);
}

Zakaznik 是非常基本的对象,包含用户名、密码、ID...

剪裁就像

</Zakaznik>
<Zaka

我不知道这是怎么回事。我期待任何建议:)

最佳答案

你的列表不应该是静态的,也稍微修改你的打印代码。像这样的方法会很好地工作:

@XStreamAlias("listZakazniku")
public class ListZakazniku {

private List<Zakaznik> zakaznicis;

public ListZakazniku() {
zakaznicis = new ArrayList<Zakaznik>();
}

public void add(Zakaznik user) {
zakaznicis.add(user);
}


@XStreamAlias("zakaznik")
private static class Zakaznik {
private String user;
private String pwd;
public Zakaznik(String user, String pwd) {
this.user = user;
this.pwd = pwd;
}
}


public static void main(String[] args){
XStream xstream = new XStream();
xstream.processAnnotations(ListZakazniku.class);
ListZakazniku ll = new ListZakazniku();
ll.add(new Zakaznik("user1", "pwd1"));
ll.add(new Zakaznik("user2", "pwd2"));
try {
try (PrintWriter out = new PrintWriter("Zakaznici.xml")) {
out.println(xstream.toXML(ll));
}
}catch (Exception e){
e.printStackTrace();
}
}
}

输出:

<listZakazniku>
<zakaznicis>
<zakaznik>
<user>user1</user>
<pwd>pwd1</pwd>
</zakaznik>
<zakaznik>
<user>user2</user>
<pwd>pwd2</pwd>
</zakaznik>
</zakaznicis>
</listZakazniku>

不要忘记每个带注释的类的 processAnnotations 调用! (另外,你的 Zakaznik 不是一个内部静态类,我想就像上面的示例一样,这只是为了挤入完整的代码..)

关于java - Xstream 在未完成时停止写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56926339/

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