<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 37, comments - 8, trackbacks - 0, articles - 0

    jsp程序設計:JDOM操作xml

    Posted on 2008-10-25 08:07 夢與橋 閱讀(875) 評論(0)  編輯  收藏 所屬分類: jsp程序設計
    1、jdom的基礎知識及包與類的說明,可到網上搜索,也可查看jdom api,這里不再羅列,提供一個地方:http://www.java2000.net/p122。下載jdom.jar的地址:http://www.jdom.org/dist/binary/
    2、使用JDOM創建和讀取XML文件
    一般步驟:
    1)建立元素及其內容:建立一個元素作為根結點,建立根元素的子結點并加入到根結點,子結點若有子結點就建立它們并加入到其父結點。也可以橫向一層層地建立,只要有條理即可。
    2)以根結點為根元素建立文件(Document對象)。
    3)建立XML文件。
    4)使用org.output包中的方法建立輸出流對象
    5)使用輸出流對象的output方法將Document對象輸出到文件中,完成XML文件的建立。
    6)實例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文件實例</title>
    </head>
    <body>
    <%
        Element root,member,name,sex,ern;
        
    //建立根元素
        root
    =new Element("文學沙龍");
        
    //建立根元素的第一個元素
        member
    =new Element("成員");
        name
    =new Element("姓名");
        sex
    =new Element("性別");
        ern
    =new Element("時代");
        name.setText(
    "李白");
        sex.setText(
    "");
        ern.setText(
    "");
        member.addContent(name);
        member.addContent(sex);
        member.addContent(ern);
        root.addContent(member);
        
    //建立根元素的第二個元素
        member
    =new Element("成員");
        name
    =new Element("姓名");
        sex
    =new Element("性別");
        ern
    =new Element("時代");
        name.setText(
    "蘇軾");
        sex.setText(
    "");
        ern.setText(
    "北宋");
        member.addContent(name);
        member.addContent(sex);
        member.addContent(ern);
        root.addContent(member);
        
    //建立根元素的第三個元素
        member
    =new Element("成員");
        name
    =new Element("姓名");
        sex
    =new Element("性別");
        ern
    =new Element("時代");
        name.setText(
    "李清照");
        sex.setText(
    "");
        ern.setText(
    "南宋");
        member.addContent(name);
        member.addContent(sex);
        member.addContent(ern);
        root.addContent(member);
        
    //以根元素建立文件
        Document doc
    =new Document(root);
        
    //使用相對路徑,默認到tomcat目錄下
        
    //FileOutputStream f=new FileOutputStream("salon.xml");
        
    String strDirPath = new File(request.getSession().getServletContext().getRealPath(request.getContextPath())).getParent();//絕對路徑
        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>文學沙龍</caption>
    <tr>
        
    <td>姓名</td>
        
    <td>性別</td>
        
    <td>時代</td>
    </tr>
    <%
      
    //獲取數據
      SAXBuilder builder
    =new SAXBuilder();//創建對象
      
    //建立Document對象
      
    //可以使用strDirpath,也中以重新獲取絕對路徑
      
    //Document readDocument=builder.build("file:\\"+strDirPath+"/salon.xml");
      Document readDocument
    =builder.build("file:\\"+pageContext.getServletContext().getRealPath("salon.xml"));  
      
    //得到根元素
      Element rootElement
    =readDocument.getRootElement();
      
    //得到根元素列表,實際上就是user元素列表
      List list
    =rootElement.getChildren();
      
    //---輸出數據---
      
    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("時代")+"</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();//建立一個解析器
    //構造一個Document,讀入salon.xml文件的內容
    Document doc
    =sb.build(new FileInputStream(pageContext.getServletContext().getRealPath("salon.xml"))); 
    Element root
    =doc.getRootElement();
    List salons
    =root.getChildren();
    //得到根元素的第一個子元素和后者的“姓名”子元素
    Element salon
    =(Element)salons.get(0);
    Element name
    =(Element)salon.getChild("姓名");
    //“姓名”添加一個屬性
    Attribute a
    =new Attribute("評價","詩仙");
    name.setAttribute(a);

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

    //替換根元素的第三個元素,但破壞了格式,這里沒有調整
    salon
    =(Element)salons.get(2);
    salon.removeContent();
    name
    =new Element("姓名");
    Element sex
    =new Element("性別");
    ern
    =new Element("時代");
    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>文學沙龍</caption>
    <tr>
        
    <td>姓名</td>
        
    <td>性別</td>
        
    <td>時代</td>
    </tr>
    <%
      
    //獲取數據
      SAXBuilder builder
    =new SAXBuilder();//創建對象
      
    //建立Document對象
      
    //可以使用strDirpath,也中以重新獲取絕對路徑
      
    //Document readDocument=builder.build("file:\\"+strDirPath+"/salon.xml");
      Document readDocument
    =builder.build("file:\\"+pageContext.getServletContext().getRealPath("salon.xml"));  
      
    //得到根元素
      Element rootElement
    =readDocument.getRootElement();
      
    //得到根元素列表,實際上就是user元素列表
      List list
    =rootElement.getChildren();
      
    //---輸出數據---
      
    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("時代")+"</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把數據庫的表轉化成XML文件示例</title>
    </head>
    <body>
    JDOM把數據庫的表轉化成XML文件
    <br>
    <%
    //建立數據庫連接并獲取學生表的記錄集和結構
    Class.forName(
    "sun.jdbc.odbc.JdbcOdbcDriver"); //加載橋驅動程序
    Connection con
    =DriverManager.getConnection("jdbc:odbc:Demo"); //建立數據庫連接
    Statement stmt
    =con.createStatement();
    ResultSet rs
    =stmt.executeQuery("select * from information"); //獲取結果集
    rs.next();
    out.println(rs.getString(
    "字段1"));
    //獲得結果集的結構
    ResultSetMetaData rsmd
    =rs.getMetaData();
    //獲得結果集的列數,也就是數據項的數目
    int numcols=rsmd.getColumnCount();
    //記錄集到XML文件的轉換
    Element root,ele,name; 
    //定義Element類的對象根元素(root)
    root
    =new Element("student"); //建立根元素

    //循環, 將結果集中的每一條記錄轉換成一個元素(標記名為“第…個記錄”)
    while(rs.next())
    {ele
    =new Element(""+rs.getRow()+"條紀錄"); //設置元素,名為“第…個記錄”
    out.println(ele);

    for(int i=1;i<=numcols;i++//循環,將一條記錄中的每個字段轉換成一個元素
    {
    // getColumnLabel(i) 獲取第i個列的字段名(列數從0開始)。
    //out.println(rs.getString(i));
    name
    =new Element(rsmd.getColumnLabel(i)); //以獲得的字段名為標記名設置元素
    name.setText(rs.getString(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"); //由于默認的編碼是utf-8,中文將顯示為亂碼,所以設為gbk
    out1.setFormat(format);
    out1.output(doc,f);
    rs.close(); con.close(); 
    //關閉各個對象
    out.println(
    "數據庫表Information已成功地轉化成XML文件DB.xml!");
    %>
    </body>
    </html>
    注:這里使用的數據庫文件為Acces的,連接方式為ODBC+數據源方式,使用的表為information,可以建立這樣一個表,內容不限,配置數據源即可。當然可以連接其他數據庫,這里只是圖個方便。
    主站蜘蛛池模板: 爽爽爽爽爽爽爽成人免费观看| 日本XXX黄区免费看| 亚洲专区先锋影音| 人妻视频一区二区三区免费| 国产精品亚洲五月天高清| 国产偷v国产偷v亚洲高清| 亚色九九九全国免费视频| 猫咪免费人成在线网站| 亚洲综合无码一区二区| 免费观看日本污污ww网站一区| 久久久久久久99精品免费| 久久精品国产亚洲AV电影网| 国产∨亚洲V天堂无码久久久| 毛片免费vip会员在线看| A毛片毛片看免费| 亚洲av日韩aⅴ无码色老头| 亚洲精品乱码久久久久久久久久久久 | 亚洲国产一区二区三区青草影视| 午夜免费福利在线观看| 久久免费视频观看| 亚洲av成人一区二区三区观看在线 | 乱淫片免费影院观看| 亚洲天堂中文字幕在线观看| 国产国产人免费视频成69大陆| 91精品免费观看| 一级做a毛片免费视频| 国产精品亚洲一区二区麻豆| 亚洲AV无码一区二区三区系列| 日韩免费视频网站| 亚欧在线精品免费观看一区| 中文字幕在线免费视频| 亚洲爆乳无码专区www| 亚洲嫩草影院在线观看| 亚洲日韩中文无码久久| jjzz亚洲亚洲女人| 最近高清国语中文在线观看免费| 国色精品va在线观看免费视频| 黄页视频在线观看免费| 亚洲综合精品伊人久久| 亚洲成人福利网站| 色婷婷六月亚洲婷婷丁香|