日期:2014-05-20  浏览次数:20727 次

使用java实现查询数据库生成xml文件时出错
控制台能按序输出我查询的内容,整个程序也不报错。可Demo.xml文件就是为空。。郁闷中,求指点。。我把生成代码写到了我的xmlDao类的构造方法:下面是全部代码

  public XmlDao() {
 
    try {
      File f = new File("F:\\Demo.xml");//Demo.xml 是你要写的目标文件

      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      DocumentBuilder db = dbf.newDocumentBuilder();
      Document doc=db.newDocument();
      Element root=doc.createElement("items");
     
      UserDAO dao=new UserDAO();
    
      List<dept> list1=new ArrayList<dept>();
  
      List<User> list2=new ArrayList<User>();
    
      list1=dao.selectDept();
    
      Element dept=null;
    
      for(dept temp1:list1){
      String pname=temp1.getName();
      String pid=temp1.getDeptid();
      System.out.println("24个处室名称111"+temp1.getName());
      dept=doc.createElement("dept");
      dept.appendChild(doc.createTextNode(pname));
      list2= dao.selectUser(pid);
      Element emp=null;
      for(User temp2:list2){
       String uname=temp2.getName();
            emp=doc.createElement("emp");
       emp.appendChild(doc.createTextNode(uname));
      
      System.out.println("各处事人员:"+uname);
      }
       dept.appendChild(emp);
     }
      
      root.appendChild(dept);
    
      
   
     
      FileOutputStream os = new FileOutputStream(f);
      ( (XmlDocument) doc).write(os);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
    
  }
                  //调用构造方法
  public static void main(String[] args) {
  XmlDao demo = new XmlDao();
  }
------解决方案--------------------
引用:
Quote: 引用:

要输出xml的Document使用javax.xml.transform.Transformer

Transformer tf=TransformerFactory.newInstance().newTransformer();
tf.transform(new DomSource(doc),new StreamResult(f));

      额,这是java自带的xml解析方法么?不太了解呀,而且这个 DomSource对象是不还得导入相关包?
 我上面代码用的是 org.apache.crimson.tree.*;

你的代码不就是用的java自带的dom吗?你的DocumentBuilderFactory不是javax.xml.parsers.DocumentBuilderFactory吗,你上面的写法跟java自带的dom是一样的。除非你不是用java自带的,如果是的话就要用我说的Transformer
------解决方案--------------------
引用:
Quote: 引用:

直接用jaxb把java对象转成xml好了,一点一点拼要累死还容易出错

    你说的是ajax吗?我现在是个老项目的维护,相对来说用java解析xml并前台绑定输出更容易跟他之前代码风格一致


google一下jaxb。。。属于java api