源代码如下:
package com.xml;import java.io.*;
import java.util.Vector;
import java.sql.*;
import javax.xml.parsers.*;
import org.apache.crimson.tree.*;
import org.w3c.dom.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.OutputKeys;
import java.util.Properties;
import com.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class CXml extends HttpServlet
{
 public void NewXML(String sql)
{
          Document doc;
          ProcessingInstruction pi;
         Element people = null;
          Element person = null;
         Element userLoginNode = null;
         Element nameNode = null;
         Element emailNode = null;
         Element telNode = null;
         Element addressNode = null;          Connection conn = null;
          Statement stat = null;
          ResultSet rs = null;          try
           {
             conn = DBFactory.getConnection();
             stat = conn.createStatement();
             rs=stat.executeQuery(sql);             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
             DocumentBuilder builder = factory.newDocumentBuilder();
             doc = builder.newDocument();
             pi = doc.createProcessingInstruction("xml-stylesheet","type=\"text/xsl\" href=\"userinfo.xsl\"");
             doc.appendChild(pi);
             people = doc.createElement("people");
            while(rs.next())
            {              person = doc.createElement("person");
              people.appendChild(person);              userLoginNode = doc.createElement("userLogin");
              userLoginNode.appendChild(doc.createTextNode(rs.getString("user_login")));
              person.appendChild(userLoginNode);              nameNode = doc.createElement("name");
              nameNode.appendChild(doc.createTextNode(rs.getString("user_name")));
              person.appendChild(nameNode);             if(!rs.getString("user_email").equals(""))
              {
              emailNode = doc.createElement("email");
              emailNode.appendChild(doc.createTextNode(rs.getString("user_email")));
              person.appendChild(emailNode);
              }             if(!rs.getString("user_tel").equals(""))
              {
              telNode = doc.createElement("tel");
              telNode.appendChild(doc.createTextNode(rs.getString("user_tel")));
              person.appendChild(telNode);
              }             if(!rs.getString("user_address").equals(""))
              {
                addressNode = doc.createElement("address");
                addressNode.appendChild(doc.createTextNode(rs.getString  ("user_address")));
                person.appendChild(addressNode);
              }
           }
           doc.appendChild(people);
           DOMSource source = new DOMSource(doc);
            TransformerFactory tFactory = TransformerFactory.newInstance();
            Transformer transformer = tFactory.newTransformer();
            Properties properties = transformer.getOutputProperties();
            properties.setProperty(OutputKeys.ENCODING, "UTF-8");
            transformer.setOutputProperties(properties);
            StreamResult result = new StreamResult("d:/temp/c.xml");
            transformer.transform(source, result);
          }
         catch(Exception e)
          {
             e.printStackTrace();
          } } protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
               
String sql = "select * from user_info order by user_login desc limit 3";
         this.NewXML(sql); }
protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
doPost(request,response);
}

}