我已经写了一些代码来为以前写过sql的用户生成密码。然后,我想将每个用户名和密码写入xml。该代码似乎可以正常工作,只是在第200个用户处它突然停止在xml标记的一半并结束,这很奇怪。我正在使用Xstream作为我的库。 Arraylist有215位用户。
我尝试了StaxDriver和DomDriver。 Stax Driver结果与空Xstream构造函数相同,但Dom甚至更糟。
serialized
pyspark
Zakaznik是非常基本的对象,带有用户名,密码,ID ......
削减就像
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();
}
我不知道这是怎么回事。我期待任何建议:)
答案 0 :(得分:0)
您的列表不应是静态的,还应稍微修改您的打印代码。这样的方法会很好地工作:
@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不是内部静态类,我想像上面的示例一样,它只是挤入了完整的代码。)