java从数据库生成xml和读取xml(无限生成或读取)

需要带入dom4j.jar

1  数据库  使用mysql

@Entity
@Table(name="t_stu")
public class Student {
private int id;
private String name;

@Id
@GeneratedValue
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

}


2      连接数据库生成xml

public class JavaSql {


    /**
     * java读取xml          
     */
    public static void main(String[] args) {
          try {
               try {
                     Class.forName("com.mysql.jdbc.Driver");
               } catch(ClassNotFoundException e) {
                System.out.println("加载驱动器类时出现异常");
                }
              try {
               File file=new File("d:/user.xml");
               FileOutputStream fos = new FileOutputStream(file);  
               OutputFormat format = OutputFormat.createPrettyPrint();
               format.setEncoding("GB2312");

               XMLWriter writer =  new XMLWriter(fos,format);
               Document doc = DocumentHelper.createDocument();
               Element rootElement = DocumentHelper.createElement("user");
               doc.setRootElement(rootElement);
               java.sql.Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student","root","");
               java.sql.Statement sql=conn.createStatement();
               java.sql.ResultSet rs=sql.executeQuery("select * from stu");
               while(rs.next())
               {
                   Element stu=rootElement.addElement("stu");
                   Element id=stu.addElement("id");
                   Element name=stu.addElement("name");
                   id.addText(rs.getString(1));
                   name.addText(rs.getString(2));
               }
              
               writer.write(doc);
              } catch (IOException e) {
               e.printStackTrace();
              }
              } catch(SQLException e) {
               System.out.println("数据库连接时出现异常");
               }
             }

}

3   读取xml并输出

public class Xml {
    @SuppressWarnings("unchecked")
    public static void main(String[] args) throws Exception {
        SAXReader read = new SAXReader();
        try {
            Document doc = read.read(new File("d:/user.xml"));
            // 根元素
            Element root = doc.getRootElement();
            // 取根元素下的子元素名称
            Iterator it = root.elementIterator();
            while (it.hasNext()) {
                // 遍历子元素
                Element ele = (Element) it.next();
                /*
                 * System.out.println(ele.getName()); // 取子元素下的元素 Iterator
                 * chilIterator = ele.elementIterator(); while
                 * (chilIterator.hasNext()) { // 遍历子元素的元素 Element eleChiElement =
                 * (Element) chilIterator.next();
                 * System.out.println(eleChiElement.getText()); }
                 */
                getChildNode(ele);
            }

        } catch (DocumentException e) {
            e.printStackTrace();
        }

    }
4  递归方法    无限输出

    @SuppressWarnings("unchecked")
    public static void getChildNode(Element root) {
        // 遍历跟元素下的所有子元素
        Iterator iter = root.elementIterator();
        //下条记录
        while (iter.hasNext()) {
            //取子元素
            Element element = (Element) iter.next();
            // 遍历子元素的下面的所有元素
            Iterator iter1 = element.elementIterator();
            //如果子元素存在  递归  不存在输入
            if(!iter1.hasNext())
              System.out.println("child:" + element.getText());
            else {
                getChildNode(element);// 自己调用自己
            }
        }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值