以前用C开发,unix平台
现在想转java   
关于数据备份时。将数据库中的数据读出后,写成xml文件,放在一个目录下面,恢复时将xml文件读出,解析,插入数据库中。
我是个菜,在C下,用以前公司里的一个底层函数,想问的问题是:
java有没有这个底层函数,将数据写成xml文件,解析xml文件。对xml不太了解,请高手指教。

解决方案 »

  1.   

    处理xml可以用流行的java开源项目,如 dom4j,jdom 等jdk1.5 以上自带处理xml的类. 以下是一个例子
    Convert a ResultSet to XML (2007-01-15 22:58:19) 
    package jdbc.test1;
    import java.sql.*;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.*;
    import javax.xml.transform.stream.*;
    import javax.xml.transform.dom.*;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    public class testxml1 {
     public static void main(String[] args)
     {
      System.out.println("test testxml1\n"); 
      try{
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      }
      catch(ClassNotFoundException e){   
      }
      try{
       DocumentBuilderFactory factory =
               DocumentBuilderFactory.newInstance();
            DocumentBuilder builder =factory.newDocumentBuilder();
            Document doc = builder.newDocument();
            Element results = doc.createElement("Results");
            doc.appendChild(results);
           
       Connection con = DriverManager.getConnection("jdbc:odbc:test");
       Statement sql = con.createStatement();
       ResultSet rs = sql.executeQuery("select * from Region");
       
          ResultSetMetaData rsmd = rs.getMetaData();
          int colCount = rsmd.getColumnCount();
         
       while (rs.next()) {
        Element row = doc.createElement("Row");
        results.appendChild(row);
        for (int ii = 1; ii <= colCount; ii++) {
         String columnName = rsmd.getColumnName(ii);
         Object value = rs.getObject(ii);
         Element node = doc.createElement(columnName);
         node.appendChild(doc.createTextNode(value.toString()));
         row.appendChild(node);
        }
       }   
       
       System.out.println(getDocumentAsXml(doc)); 
      }
      catch(Exception e){   
       System.out.print("error:" + e.toString());
      }  
      
     }
     
     public static String getDocumentAsXml(Document doc)
      throws TransformerConfigurationException, TransformerException {
      DOMSource domSource = new DOMSource(doc);
      TransformerFactory tf = TransformerFactory.newInstance();
      Transformer transformer = tf.newTransformer();
      //transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,"yes");
      transformer.setOutputProperty(OutputKeys.METHOD, "xml");
      transformer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
      // we want to pretty format the XML output
      // note : this is broken in jdk1.5 beta!
      transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
      transformer.setOutputProperty(OutputKeys.INDENT, "yes");
      // 
      java.io.StringWriter sw = new java.io.StringWriter();
      StreamResult sr = new StreamResult(sw);
      transformer.transform(domSource, sr);
      return sw.toString();
     }
    }