如何在xml文件中保存记录?

时间:2015-03-29 21:54:08

标签: java xml java-ee

在我的Web应用程序中,我希望使用jdom将记录从数据库表保存到xml文件,但问题是只保存了一条记录。

Test_xml.java

 List<User> users = session.selectList("dao.UserDao.findAll") ;
for (User u : users) {
       try {

    Element company = new Element("user");
    Document doc = new Document(company);
    Element staff = new Element("data");
     staff.setAttribute(new Attribute("id", u.getId()));
     staff.setAttribute(new Attribute("name", u.getName()));
    doc.getRootElement().addContent(staff);
    XMLOutputter xmlOutput = new XMLOutputter();
    xmlOutput.setFormat(Format.getPrettyFormat());
    xmlOutput.output(doc, new FileWriter("c:\\user.xml"));
    out.println("File Saved!");
  } catch (IOException io) {
    out.println(io.getMessage());
  }

我希望有这样的结构:

<?xml version="1.0" encoding="UTF-8"?>
<user>
<data id="1" name="Nancy" />
<data id="2" name="Jennifer" />
</user>

请帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

您将继续覆盖已保存的记录。您正在for循环中创建新的XMLOutputer,并使用它将一个用户保存到user.xml文件。

因此,您的文件将仅包含用户列表中的最后一个用户。

你需要在for循环之外创建Root元素,在循环内部附加到子节点(代码中的人员),然后在循环之后,使用XMLOutputer将整个文档输出到xml。

答案 1 :(得分:0)

要拥有这种结构,您可以这样做:

    XMLOutputter xmlOutput = new XMLOutputter();
    Element company = new Element("user");
     Document doc = new Document(company);

    for (User u : users) {
        try {

     Element staff = new Element("data");
     staff.setAttribute(new Attribute("id", u.getId()));
     staff.setAttribute(new Attribute("name", u.getName()));
     doc.getRootElement().addContent(staff);

     xmlOutput.setFormat(Format.getPrettyFormat());
     xmlOutput.output(doc, new FileWriter("c:\\user.xml"));

   } catch (IOException io) {
     //@todo manage your exception
   }

}

如果你的id是int,你可以这样做:

staff.setAttribute(new Attribute("id",Integer.toString(u.getId())));