• 转载 通过DOM4J将数据库的表转换为XML文档


        实现代码如下:

    package com.cjh.dom4j;

    import java.io.FileWriter;

    import java.io.IOException;

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.ResultSet;

    import java.sql.ResultSetMetaData;

    import java.sql.SQLException;

    import java.sql.Statement;

    import java.util.List;



    import org.dom4j.Document;

    import org.dom4j.DocumentException;

    import org.dom4j.DocumentHelper;

    import org.dom4j.Element;

    import org.dom4j.io.OutputFormat;

    import org.dom4j.io.SAXReader;

    import org.dom4j.io.XMLWriter;



    public class Students {



    public static ResultSet Query(String str){ //返回所查询的数据集

    try {

    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

    Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=cjh", "sa", "");

    Statement stmt=conn.createStatement();

    ResultSet rs=stmt.executeQuery(str);

    return rs;

    } catch (ClassNotFoundException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    return null;

    }



    public static void writeXML(Document doc,String xmlName){ //创建XML文档

    try {

    OutputFormat output=OutputFormat.createPrettyPrint();

    output.setEncoding("gb2312");

    XMLWriter xmlw=new XMLWriter(new FileWriter(xmlName),output);

    xmlw.write(doc);

    xmlw.close();

    System.out.println("创建成功....");

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }



    /*

    * sql:表示sql语句,要查询的表信息

    * rootElementName:表示根元素的名称

    * eleElement:表示根元素下的第一个子元素,

    * xmlName:表示要保存的xml文件名

    */

    public void createXML(String sql,String rootElementName,String eleElement,String xmlName){

    //sql="select * from student";

    //rootElementName="students";

    ResultSet rs=Query(sql); //返回所查询的数据集

    try {

    if(rs!=null){

    Document doc=DocumentHelper.createDocument();

    Element eleroot=doc.addElement(rootElementName); //添加根元素

    ResultSetMetaData rsmd=rs.getMetaData();

    int colshu=rsmd.getColumnCount(); //取得列数

    while(rs.next()){ //以下是为子元素添加元素和内容

    Element element=eleroot.addElement(eleElement); //为根元素添加子元素(有多少条记录则有多少子元素)

    for(int i=1;i<=colshu;i++){

    //String colName=rsmd.getColumnName(i); //取得当前列名

    //从子元素中添加元素(列名)和元素的文本(列值) 以下是为子元素添加元素

    Element ele=element.addElement(rsmd.getColumnName(i)).addText(rs.getString(i));

    }

    }

    // OutputFormat output=OutputFormat.createPrettyPrint();

    // output.setEncoding("gb2312");

    // XMLWriter xmlw=new XMLWriter(new FileWriter(xmlName),output);

    // xmlw.write(doc);

    // xmlw.close();

    writeXML(doc, xmlName); //调用创建XML文档的方法



    }

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }



    }



    /*

    * sql:表示sql语句,要查询的表信息

    * rootElementName:表示根元素的名称

    * eleElement:表示根元素下的第一个子元素,

    */

    public void createXML(String sql,String rootElementName,String eleElement){

    String xmlName=rootElementName+".xml"; //要保存的文件名

    ResultSet rs=Query(sql); //返回所查询的数据集

    try {

    if(rs!=null){

    Document doc=DocumentHelper.createDocument();

    Element eleroot=doc.addElement(rootElementName); //添加根元素

    ResultSetMetaData rsmd=rs.getMetaData();

    int colshu=rsmd.getColumnCount(); //取得列数

    while(rs.next()){ //以下是为子元素添加元素和内容

    Element element=eleroot.addElement(eleElement); //为根元素添加子元素(有多少条记录则有多少子元素)

    for(int i=1;i<=colshu;i++){

    //String colName=rsmd.getColumnName(i); //取得当前列名

    //从子元素中添加元素(列名)和元素的文本(列值) 以下是为子元素添加元素

    Element ele=element.addElement(rsmd.getColumnName(i)).addText(rs.getString(i));

    }

    }

    writeXML(doc, xmlName); //调用创建XML文档的方法

    }

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }



    /*

    * sql:表示sql语句,要查询的表信息

    * rootElementName:表示根元素的名称

    * eleElement:表示根元素下的第一个子元素,

    */

    public void createXML(String sql,String rootElementName){

    String eleElement=rootElementName+"Iterm"; //根元素下的子元素

    String xmlName=rootElementName+".xml"; //要保存的文件名

    ResultSet rs=Query(sql); //返回所查询的数据集

    try {

    if(rs!=null){

    Document doc=DocumentHelper.createDocument();

    Element eleroot=doc.addElement(rootElementName); //添加根元素

    ResultSetMetaData rsmd=rs.getMetaData();

    int colshu=rsmd.getColumnCount(); //取得列数

    while(rs.next()){ //以下是为子元素添加元素和内容

    Element element=eleroot.addElement(eleElement); //为根元素添加子元素(有多少条记录则有多少子元素)

    for(int i=1;i<=colshu;i++){

    //String colName=rsmd.getColumnName(i); //取得当前列名

    //从子元素中添加元素(列名)和元素的文本(列值) 以下是为子元素添加元素

    Element ele=element.addElement(rsmd.getColumnName(i)).addText(rs.getString(i));

    }

    }

    writeXML(doc, xmlName); //调用创建XML文档的方法

    }

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }



    /*

    * sql:表示sql语句,要查询的表信息

    */

    public void createXML(String sql){

    String rootElementName="root"; //根元素

    String eleElement=rootElementName+"Iterm"; //根元素下的子元素

    String xmlName=rootElementName+".xml"; //保存的xml文档名

    ResultSet rs=Query(sql); //返回所查询的数据集

    try {

    if(rs!=null){

    Document doc=DocumentHelper.createDocument();

    Element eleroot=doc.addElement(rootElementName); //添加根元素

    ResultSetMetaData rsmd=rs.getMetaData();

    int colshu=rsmd.getColumnCount(); //取得列数

    while(rs.next()){ //以下是为子元素添加元素和内容

    Element element=eleroot.addElement(eleElement); //为根元素添加子元素(有多少条记录则有多少子元素)

    for(int i=1;i<=colshu;i++){

    //String colName=rsmd.getColumnName(i); //取得当前列名

    //从子元素中添加元素(列名)和元素的文本(列值) 以下是为子元素添加元素

    Element ele=element.addElement(rsmd.getColumnName(i)).addText(rs.getString(i));

    }

    }

    writeXML(doc, xmlName); //调用创建XML文档的方法

    }

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }



    public void UpdateXML(int i){

    try {

    SAXReader reader=new SAXReader();

    Document doc=reader.read("student.xml");

    List<Element> list=doc.selectNodes("//students/student");

    for (Element ele : list) {

    //得到名称为age的元素,并取出文本值再加上要修改的数

    int age=Integer.parseInt(ele.element("age").getText())+i;

    String sage=String.valueOf(age);

    ele.element("age").setText(sage); //设置元素age的文本值

    }

    System.out.println("更新成功...");

    writeXML(doc, "student.xml"); //调用创建XML文档的方法

    } catch (DocumentException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    public static void main(String[] args) {

    Students stu=new Students();

    String sql="select * from student";

    //stu.createXML(sql,"students","student","student.xml");

    stu.UpdateXML(10);

    }

    }

  • 相关阅读:
    由jQuery Validation Remote验证引起的错误(MVC3 jQuery.validate.unobtrusive)
    Windows8下设置VS默认启动方式为管理员启动
    Asp.Net MVC 必备插件MVC Route Visualizer(Visual Studio 2012 版)
    2012 LinkCoder Jeffrey Richter:Win 8应用开发与.NET4.5
    WCF应用:宿主与调用纯代码示例(Host &Client code only sample)
    Nexus 7 入手风波记
    [转]使用HyperV BPA(Best Practices Analyzer最佳化分析工具)
    [转]SCVMM2012部署之一:先决条件条件准备
    [转]VMware管理员必掌握的八个HyperV功能
    [转]Installing and Configuring target iSCSI server on Windows Server 2012
  • 原文地址:https://www.cnblogs.com/xiao0/p/2170199.html
Copyright © 2020-2023  润新知