posts - 37, comments - 8, trackbacks - 0, articles - 0
          1、jdom的基礎(chǔ)知識(shí)及包與類的說明,可到網(wǎng)上搜索,也可查看jdom api,這里不再羅列,提供一個(gè)地方:http://www.java2000.net/p122。下載jdom.jar的地址:http://www.jdom.org/dist/binary/
          2、使用JDOM創(chuàng)建和讀取XML文件
          一般步驟:
          1)建立元素及其內(nèi)容:建立一個(gè)元素作為根結(jié)點(diǎn),建立根元素的子結(jié)點(diǎn)并加入到根結(jié)點(diǎn),子結(jié)點(diǎn)若有子結(jié)點(diǎn)就建立它們并加入到其父結(jié)點(diǎn)。也可以橫向一層層地建立,只要有條理即可。
          2)以根結(jié)點(diǎn)為根元素建立文件(Document對(duì)象)。
          3)建立XML文件。
          4)使用org.output包中的方法建立輸出流對(duì)象
          5)使用輸出流對(duì)象的output方法將Document對(duì)象輸出到文件中,完成XML文件的建立。
          6)實(shí)例slDisplay.jsp代碼如下:
          <%@page contentType="text/html;charset=gb2312" %>
          <%@page import="org.jdom.*,org.jdom.input.*,org.jdom.output.XMLOutputter,
          java.io.*,org.jdom.output.Format,java.util.*"
          %>
          <html>
          <head>
          <title>JDOM讀取XML文件實(shí)例</title>
          </head>
          <body>
          <%
              Element root,member,name,sex,ern;
              
          //建立根元素
              root
          =new Element("文學(xué)沙龍");
              
          //建立根元素的第一個(gè)元素
              member
          =new Element("成員");
              name
          =new Element("姓名");
              sex
          =new Element("性別");
              ern
          =new Element("時(shí)代");
              name.setText(
          "李白");
              sex.setText(
          "");
              ern.setText(
          "");
              member.addContent(name);
              member.addContent(sex);
              member.addContent(ern);
              root.addContent(member);
              
          //建立根元素的第二個(gè)元素
              member
          =new Element("成員");
              name
          =new Element("姓名");
              sex
          =new Element("性別");
              ern
          =new Element("時(shí)代");
              name.setText(
          "蘇軾");
              sex.setText(
          "");
              ern.setText(
          "北宋");
              member.addContent(name);
              member.addContent(sex);
              member.addContent(ern);
              root.addContent(member);
              
          //建立根元素的第三個(gè)元素
              member
          =new Element("成員");
              name
          =new Element("姓名");
              sex
          =new Element("性別");
              ern
          =new Element("時(shí)代");
              name.setText(
          "李清照");
              sex.setText(
          "");
              ern.setText(
          "南宋");
              member.addContent(name);
              member.addContent(sex);
              member.addContent(ern);
              root.addContent(member);
              
          //以根元素建立文件
              Document doc
          =new Document(root);
              
          //使用相對(duì)路徑,默認(rèn)到tomcat目錄下
              
          //FileOutputStream f=new FileOutputStream("salon.xml");
              
          String strDirPath = new File(request.getSession().getServletContext().getRealPath(request.getContextPath())).getParent();//絕對(duì)路徑
              FileOutputStream f
          =new FileOutputStream(strDirPath+"/salon.xml");
              
          //建立輸出流
              XMLOutputter out1
          =new XMLOutputter();
              
          //格式化文件
              Format format
          =Format.getPrettyFormat();
              format.setEncoding(
          "gb2312");
              out1.setFormat(format);
              
          //將文件輸出到XML文件中
              out1.output(doc,f);
          %>
          <table border="1" align="center">
          <caption>文學(xué)沙龍</caption>
          <tr>
              
          <td>姓名</td>
              
          <td>性別</td>
              
          <td>時(shí)代</td>
          </tr>
          <%
            
          //獲取數(shù)據(jù)
            SAXBuilder builder
          =new SAXBuilder();//創(chuàng)建對(duì)象
            
          //建立Document對(duì)象
            
          //可以使用strDirpath,也中以重新獲取絕對(duì)路徑
            
          //Document readDocument=builder.build("file:\\"+strDirPath+"/salon.xml");
            Document readDocument
          =builder.build("file:\\"+pageContext.getServletContext().getRealPath("salon.xml"));  
            
          //得到根元素
            Element rootElement
          =readDocument.getRootElement();
            
          //得到根元素列表,實(shí)際上就是user元素列表
            List list
          =rootElement.getChildren();
            
          //---輸出數(shù)據(jù)---
            
          for(Iterator i=list.iterator();i.hasNext();){
                Element current
          =(Element)i.next();
                out.print(
          "<tr>");
                out.println(
          "<td>"+current.getChildText("姓名")+"</td>");
                out.println(
          "<td>"+current.getChildText("性別")+"</td>");
                out.println(
          "<td>"+current.getChildText("時(shí)代")+"</td>");
                out.println(
          "</tr>");
            }
          %>
          </table>
          </body>
          </html>
          2、使用JDOM修改XML文件:slUpdate.jsp代碼如下:
          <%@page contentType="text/html;charset=gb2312" %>
          <%@page import="org.jdom.*,org.jdom.input.*,org.jdom.output.XMLOutputter,
          java.io.*,org.jdom.output.Format,java.util.*"
          %>
          <html>
          <head>
          <title>JDOM修改XML文件</title>
          </head>
          <body>
          <%
          SAXBuilder sb
          =new SAXBuilder();//建立一個(gè)解析器
          //構(gòu)造一個(gè)Document,讀入salon.xml文件的內(nèi)容
          Document doc
          =sb.build(new FileInputStream(pageContext.getServletContext().getRealPath("salon.xml"))); 
          Element root
          =doc.getRootElement();
          List salons
          =root.getChildren();
          //得到根元素的第一個(gè)子元素和后者的“姓名”子元素
          Element salon
          =(Element)salons.get(0);
          Element name
          =(Element)salon.getChild("姓名");
          //“姓名”添加一個(gè)屬性
          Attribute a
          =new Attribute("評(píng)價(jià)","詩仙");
          name.setAttribute(a);

          //更改根元素的第二個(gè)元素的子元素"時(shí)代".
          salon
          =(Element)salons.get(1);
          Element ern
          =salon.getChild("時(shí)代");//得到指定的子元素
          ern.setText(
          "");

          //替換根元素的第三個(gè)元素,但破壞了格式,這里沒有調(diào)整
          salon
          =(Element)salons.get(2);
          salon.removeContent();
          name
          =new Element("姓名");
          Element sex
          =new Element("性別");
          ern
          =new Element("時(shí)代");
          name.setText(
          "卓文君");
          sex.setText(
          "");
          ern.setText(
          "");
          salon.addContent(name);
          salon.addContent(sex);
          salon.addContent(ern);

          //文件輸回到XML文件中
          XMLOutputter out1
          =new XMLOutputter();
          out1.output(doc,
          new FileOutputStream(pageContext.getServletContext().getRealPath("salon.xml")));
          %>
          <table border="1" align="center">
          <caption>文學(xué)沙龍</caption>
          <tr>
              
          <td>姓名</td>
              
          <td>性別</td>
              
          <td>時(shí)代</td>
          </tr>
          <%
            
          //獲取數(shù)據(jù)
            SAXBuilder builder
          =new SAXBuilder();//創(chuàng)建對(duì)象
            
          //建立Document對(duì)象
            
          //可以使用strDirpath,也中以重新獲取絕對(duì)路徑
            
          //Document readDocument=builder.build("file:\\"+strDirPath+"/salon.xml");
            Document readDocument
          =builder.build("file:\\"+pageContext.getServletContext().getRealPath("salon.xml"));  
            
          //得到根元素
            Element rootElement
          =readDocument.getRootElement();
            
          //得到根元素列表,實(shí)際上就是user元素列表
            List list
          =rootElement.getChildren();
            
          //---輸出數(shù)據(jù)---
            
          for(Iterator i=list.iterator();i.hasNext();){
                Element current
          =(Element)i.next();
                out.print(
          "<tr>");
                out.println(
          "<td>"+current.getChildText("姓名")+"</td>");
                out.println(
          "<td>"+current.getChildText("性別")+"</td>");
                out.println(
          "<td>"+current.getChildText("時(shí)代")+"</td>");
                out.println(
          "</tr>");
            }
          %>
          </table>
          </body>
          </html>
          3、使用JDOM修改XML文件:data.jsp代碼如下:
          <%@ page contentType="text/html;charset=gb2312"%>
          <%@ page import="javax.xml.parsers.*,org.jdom.*,org.jdom.output.XMLOutputter,java.io.*,java.util.*, java.sql.*,org.jdom.output.Format"%>
          <html>
          <head>
          <title> JDOM把數(shù)據(jù)庫的表轉(zhuǎn)化成XML文件示例</title>
          </head>
          <body>
          JDOM把數(shù)據(jù)庫的表轉(zhuǎn)化成XML文件
          <br>
          <%
          //建立數(shù)據(jù)庫連接并獲取學(xué)生表的記錄集和結(jié)構(gòu)
          Class.forName(
          "sun.jdbc.odbc.JdbcOdbcDriver"); //加載橋驅(qū)動(dòng)程序
          Connection con
          =DriverManager.getConnection("jdbc:odbc:Demo"); //建立數(shù)據(jù)庫連接
          Statement stmt
          =con.createStatement();
          ResultSet rs
          =stmt.executeQuery("select * from information"); //獲取結(jié)果集
          rs.next();
          out.println(rs.getString(
          "字段1"));
          //獲得結(jié)果集的結(jié)構(gòu)
          ResultSetMetaData rsmd
          =rs.getMetaData();
          //獲得結(jié)果集的列數(shù),也就是數(shù)據(jù)項(xiàng)的數(shù)目
          int numcols=rsmd.getColumnCount();
          //記錄集到XML文件的轉(zhuǎn)換
          Element root,ele,name; 
          //定義Element類的對(duì)象根元素(root)
          root
          =new Element("student"); //建立根元素

          //循環(huán), 將結(jié)果集中的每一條記錄轉(zhuǎn)換成一個(gè)元素(標(biāo)記名為“第…個(gè)記錄”)
          while(rs.next())
          {ele
          =new Element(""+rs.getRow()+"條紀(jì)錄"); //設(shè)置元素,名為“第…個(gè)記錄”
          out.println(ele);

          for(int i=1;i<=numcols;i++//循環(huán),將一條記錄中的每個(gè)字段轉(zhuǎn)換成一個(gè)元素
          {
          // getColumnLabel(i) 獲取第i個(gè)列的字段名(列數(shù)從0開始)。
          //out.println(rs.getString(i));
          name
          =new Element(rsmd.getColumnLabel(i)); //以獲得的字段名為標(biāo)記名設(shè)置元素
          name.setText(rs.getString(i)); 
          //獲取字段內(nèi)容作為字段名元素的內(nèi)容
          ele.addContent(name); 
          //將字段名元素置為記錄的子元素

          }
          root.addContent(ele); 
          //將記錄元素置為根元素的子元素
          }
          Document doc
          =new Document(root); //以根元素建立文檔
          FileOutputStream f
          =new FileOutputStream(pageContext.getServletContext().getRealPath("DB.xml"));
          XMLOutputter out1
          =new XMLOutputter(); //將文檔輸出形成XML文件
          Format format
          =Format.getPrettyFormat(); //格式化文檔
          format.setEncoding(
          "gb2312"); //由于默認(rèn)的編碼是utf-8,中文將顯示為亂碼,所以設(shè)為gbk
          out1.setFormat(format);
          out1.output(doc,f);
          rs.close(); con.close(); 
          //關(guān)閉各個(gè)對(duì)象
          out.println(
          "數(shù)據(jù)庫表Information已成功地轉(zhuǎn)化成XML文件DB.xml!");
          %>
          </body>
          </html>
          注:這里使用的數(shù)據(jù)庫文件為Acces的,連接方式為ODBC+數(shù)據(jù)源方式,使用的表為information,可以建立這樣一個(gè)表,內(nèi)容不限,配置數(shù)據(jù)源即可。當(dāng)然可以連接其他數(shù)據(jù)庫,這里只是圖個(gè)方便。
          主站蜘蛛池模板: 阿尔山市| 五莲县| 平谷区| 游戏| 津南区| 大渡口区| 建水县| 时尚| 韶关市| 富锦市| 红安县| 临漳县| 梁山县| 克拉玛依市| 赣榆县| 大余县| 靖西县| 遂宁市| 桂平市| 大名县| 浪卡子县| 定日县| 荥经县| 沂南县| 综艺| 洛隆县| 沙湾县| 合川市| 漳平市| 平陆县| 宝鸡市| 兰西县| 五峰| 西昌市| 高清| 正镶白旗| 武冈市| 水富县| 曲沃县| 伊金霍洛旗| 邢台县|