以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  请教如何在内存中,完成xslt转换动态生成的xml,谢谢  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=49697)


--  作者:xiaomu417
--  发布时间:7/11/2007 10:58:00 AM

--  请教如何在内存中,完成xslt转换动态生成的xml,谢谢
初学xml xslt,我现在用jdom生成xml,然后存储在硬盘中,在进行转换,输出。以下为代码,请问这个过程如何在内存中完成,创建即存在,不调用了则消失。或者说是对动态创建的Document对象进行操作。谢谢
public class DB {
 
 public static void returnValue() {
  Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;
  
  try{
   Class.forName("com.mysql.jdbc.Driver");
   String url="jdbc:mysql://localhost:3306/test";
   conn=DriverManager.getConnection(url, "root", "root");
     
   stmt = conn.createStatement();
   String sql="select * from student";   //定义查询的SQL语句
   rs=stmt.executeQuery(sql);   //执行查询
   
   Document doc = new Document();//创建文档
   org.jdom.ProcessingInstruction pi = new ProcessingInstruction("xml-stylesheet","href=\"http://localhost:8081/xmltest/student.xsl\" type=\"text/xsl\"");
   doc.addContent(pi);
   
   Element eRoot = new Element("students");
   doc.setRootElement(eRoot);           
   
   ResultSetMetaData rsmd = rs.getMetaData(); //获取字段名
   
   int numberOfColumns = rsmd.getColumnCount(); //获取字段数
   int i=0;
   while(rs.next()){ //将查询结果取出
     Element eltChild = new Element("student"); //创建元素 生成JDOM树
     eRoot.addContent(eltChild);
   
     for (i=2; i<=numberOfColumns;i++)
      {   String value = rs.getString(i) ;
                   //   代码转换
          System.out.println(value);
          Element eValue = new Element(rsmd.getColumnName(i)).setText(value);
          eltChild.addContent(eValue);
      }
   }
   rs.close(); //关闭结果集
   stmt.close(); //关闭statement
   conn.close(); //关闭连接
   
   Format fmt = Format.getPrettyFormat();
   fmt.setEncoding("gb2312");
   fmt.setIndent("    ");
   
   
   XMLOutputter outp = new XMLOutputter();
   outp.setFormat(fmt);
   outp.output(doc, new FileOutputStream("D:\\tomcat\\apache-tomcat-6.0.13\\webapps\\xmltest\\student.xml")); //输出XML文档
   System.out.println("XML 文档生成完毕!");

下面是转换页面:
<%@   page   import="java.io.*"%>  
  <%@   page   import="org.jdom.*"%>  
  <%@   page   import="org.jdom.input.*"%>  
  <%@   page   import="org.jdom.output.*"%>  
  <%@   page   import="org.jdom.transform   .*"%>  
  <%@   page   import="javax.xml.transform.*"%>  
  <%@   page   import="javax.xml.transform.stream.*"%>  
<%@ page import = "bean.DB" %>
   
  <%  

  DB db = new DB();
  db.returnValue();
  
  File   _xslFileName=new   File("D:\\tomcat\\apache-tomcat-6.0.13\\webapps\\xmltest\\student.xsl");  
  File   _xmlFileName=new   File("D:\\tomcat\\apache-tomcat-6.0.13\\webapps\\xmltest\\student.xml");  
   
  SAXBuilder   _builder=new   SAXBuilder();  
  Document   _xmlDOC=_builder.build(_xmlFileName);  
   
  TransformerFactory   _transFactory   =   TransformerFactory.newInstance();  
  Source   _xslSource   =   new   StreamSource(_xslFileName);  
  Transformer   _transFormer=_transFactory.newTransformer(_xslSource);  
   
  JDOMResult   _out   =   new   JDOMResult();  
  _transFormer.transform(new   JDOMSource(_xmlDOC),_out);  
   
  XMLOutputter   _outputter=new   XMLOutputter();  
  _outputter.output(_xmlDOC,response.getWriter());  
  %>


--  作者:xiaomu417
--  发布时间:7/12/2007 2:38:00 PM

--  
已搞定 !
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms