以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML源码及示例(仅原创和转载) 』  (http://bbs.xml.org.cn/list.asp?boardid=32)
----  jdom samples (1)  (http://bbs.xml.org.cn/dispbbs.asp?boardid=32&rootid=&id=6531)


--  作者:jlive
--  发布时间:4/7/2004 2:53:00 PM

--  jdom samples (1)
下面是我在去年研究并实践的xml样例,与兄弟一起分享
由数据库生成xml文件:
package com.sz.xml;

import com.sz.lgyw.util.DataSourceConn;
import java.sql.*;

import org.jdom.output.XMLOutputter;
import org.jdom.Document;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.FileWriter;
import com.sz.xml.log.Log;


public class DatabaseToXml {
  // rs --> dom --> xml

  public static void generateXmlFromDatabase(ResultSet rs) {
    Document doc = GenerateXmlDom.GenerateDomFromDatabase(rs);
     XMLOutputter outputter = new XMLOutputter("  ", true);
    try {

      PrintWriter file = new PrintWriter(new FileWriter("testXml.xml", false), true);
      //outputter.output(doc, System.out);
      outputter.output(doc, file);
    }
    catch (IOException io) {
      Log.log("Err: ", io.getMessage());
      io.printStackTrace();
    }
  }

  public static void main(String args[]){
    String sql = "select * from t_user";
    ResultSet rs = null;
    DataSourceConn ds = new DataSourceConn();
    rs = ds.executeQuery(sql);
    DatabaseToXml.generateXmlFromDatabase(rs);
  }
}
存取xml里的数据到数据库里:
package com.sz.xml;

import java.text.DateFormat;
import java.util.*;
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import com.sz.lgyw.util.DataSourceConn;

public class SaveXmlDataToDb {
    public static Document doc = null;
    public static Element rootElement = null;
    public static XMLOutputter outputter = null;


    public static List GetValues(String fileName,String nodeTag,int row)
    {
        initXML(fileName);
        List  list = xml_get(nodeTag,row);
        return list;
    }

    public static void initXML(String fileName)
    {
        try
        {
            doc = xmlreadDocument(fileName);
            rootElement = doc.getRootElement();
            outputter = new XMLOutputter();
            outputter.setEncoding("GB2312");
        }
        catch(JDOMException jdomexception)
        {
            jdomexception.printStackTrace();
        }
        catch(Exception exception)
        {
            exception.printStackTrace();
        }
    }


    public static Element xmlfindElement(Element element, String nodeTag)
    {
        Iterator iterator = element.getChildren().iterator();
        if(element.getName().equals(nodeTag))
            return element;
        while(iterator.hasNext())
        {
            Element element1 = (Element)iterator.next();
            Element element2 = xmlfindElement(element1, nodeTag);
            if(element2 != null)
                return element2;
        }
        return null;
    }


    public static Document xmlreadDocument(String fileName)
        throws Exception, JDOMException
    {
        SAXBuilder saxbuilder = new SAXBuilder(false);
        Document document = saxbuilder.build(fileName);
        return document;
    }


    public static void main(String args[])
        throws Exception
    {
                List list=GetValues("catalog.xml","composition",5);
                ArrayList list2 = null;
                for (int i = 0; i < list.size(); i++)
                {
                  list2 = (ArrayList) list.get(i);
                  StringBuffer strBuf = new StringBuffer();
                  for(int ii=0 ;ii<list2.size();ii++){
                    strBuf.append(list2.get(ii).toString());
                    strBuf.append(" *** ");
                  }
                  System.out.println(strBuf.toString());
                  System.out.println(" ------------------ ");
                }
    }

    public static List xml_get(String nodeTag,int row)
    {
            List h =  xmlgetData(rootElement,nodeTag,row);
        return h;
    }

    public static List xmlgetData(Element element, String nodeTag,int row)
    {
            ArrayList list = null;
            int i=0,j=0;

        Element element1 = xmlfindElement(element, nodeTag);
        System.out.println("<"+nodeTag+">");
        if (element1==null) {
            return null;
        } else {
                if (element1.hasChildren()) {
                    i=element1.getParent().getChildren(nodeTag).size();
                    j=element1.getChildren().size();
                    list = new ArrayList(i);


                    for (int ii=0;ii<i;ii++) {
                            element1=(Element) element1.getParent().getChildren(nodeTag).get(ii);
                            ArrayList  list2 = new ArrayList(j+1);
                        for (int jj=0;jj<j;jj++) {
                             list2.add(((Element) element1.getChildren().get(jj)).getText());
                        }
                        list2.add(element1.getAttribute("composer").getValue());
                        list.add(list2);

                    }
                } else {
                  return null;
                }
        }
        return list;
    }
}


--  作者:struggle
--  发布时间:6/15/2004 8:45:00 AM

--  
谢谢楼主!!!
这么好的例子居然每人顶,我狂顶!!!
--  作者:oO泡泡Oo
--  发布时间:8/5/2004 11:12:00 PM

--  
up up up up
--  作者:笨鸟先飞168
--  发布时间:3/8/2005 5:08:00 PM

--  
请问大虾有没有c++版本呢?笨笨的问一下这段程序可以作为xml文件和数据库的接口吧?谢谢帮助
--  作者:cooljam
--  发布时间:3/18/2005 3:55:00 PM

--  
upupupupup
--  作者:flyfoxs
--  发布时间:9/16/2005 9:24:00 AM

--  
代码不太全,有很多里面用到的类,没有提供出来。

比如com.sz.xml.log.Log;
com.sz.lgyw.util.DataSourceConn



--  作者:affanasieff
--  发布时间:3/11/2006 1:40:00 AM

--  
up
--  作者:nnmk
--  发布时间:3/15/2006 4:03:00 PM

--  
谢谢了
我也要用到dom解析 学习了
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms