我想用利用循环来完成对XML文件的读写操作,可是生成的XML文件始终只有一个元素(就是循环最后产生的那个元素),以前的好像都被覆盖了。那位高手可以告诉我该怎么解决这个问题。不胜感激,谢谢!~代码最好是写的详细一点.

解决方案 »

  1.   

    推荐用jdom做写入操作,把每次循环得出的结果放到list中,在把list加入根元素。
      

  2.   

    我也是这么写的呀。代码如下:
    package tools;import java.io.BufferedOutputStream;
    import java.io.FileOutputStream;
    import java.util.ArrayList;
    import java.util.List;import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.output.Format;
    import org.jdom.output.XMLOutputter;import pojo.Computerroom;public class OutXML { public void outXML(Computerroom room,List list){
        Format format = Format.getCompactFormat();
        format.setIndent("   ");
        
        XMLOutputter outputter = new XMLOutputter();
        FileOutputStream stream;
    try {
    stream = new FileOutputStream("d:/room.xml");
    BufferedOutputStream outputStream = new BufferedOutputStream(stream);

    //ÉèÖøùÔªËØ
    Element root = new Element(room.toString());
    Document document = new Document();
    document.setRootElement(root);
    List list2 = new ArrayList();

    for(int i=0;i<list.size();i++){
    Element id = new Element("ID");
    id.setText(((Computerroom)list.get(i)).getId().toString() );
    Element No = new Element("roomNo");
    No.setText(((Computerroom)list.get(i)).getRoomno());
    Element Name = new Element("roomName");
    Name.setText(((Computerroom)list.get(i)).getRoomname());
    Element deptId = new Element("deptId");
    deptId.setText(((Computerroom)list.get(i)).getDept().getId().toString());
    Element Addr = new Element("roomAdd");
    Addr.setText(((Computerroom)list.get(i)).getRoomaddr());
    Element Note = new Element("roomNote");
    Note.setText(((Computerroom)list.get(i)).getRe());
    list2.add(id);
    list2.add(No);
    list2.add(Name);
    list2.add(deptId);
    list2.add(Addr);
    list2.add(Note);
    root.setContent(list2);
    }
    outputter.output(document, outputStream);

    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }

    }
      

  3.   

    你的Computerroom类代码帖出来看看吧!
      

  4.   

    还有你的room.xml
    文件也一起帖出来啊,不然大家怎么帮你看代码呢?
      

  5.   

    这逻辑是不是有点问题?
    每次循环都把上一次循环的内容覆盖了
    root.setContent(list2);至少是用addContent()吧
      

  6.   

    把root.setContent(list2);放在循环外