Edzy_Java

            BlogJava :: 首頁 ::  ::  ::  :: 管理 ::
            58 隨筆 :: 12 文章 :: 11 評論 :: 0 Trackbacks
          ????最近一直在看XML,才發現XML真是個好東東,有了它,交換數據變得前所未有的方便,今天做了我的第一個XML應用,呵呵,一個基于XML技術的留言簿。
          ????放棄了數據庫,而直接使用XML來存儲信息,讀取后通過XSLT轉換成HTML直接顯示,感覺方便極了。
          ????開發工具采用Eclipse作為Java IDE,XML操作使用JDOM,XML文件編輯使用Oxygen XML Editor(很好用的XML編輯器,純JAVA)。
          ????這是guestbook.xml,所有的留言都存儲在這里。
          <?xml?version="1.0"?encoding="gb2312"?>
          <!DOCTYPE?guestbook?SYSTEM?"file:/F:/site/xmlGuestbook/guestbook.dtd">
          <?xml-stylesheet?type="text/xsl"?href="guestbook.xsl"?>
          <guestbook>
          ????<message>
          ????????<name>Vince?Carter</name>
          ????????<ip>202.113.66.66</ip>
          ????????<content>a?good?site,do?you?think?so?</content>
          ????</message>
          ????<message>
          ????????<name>Antony?Walker</name>
          ????????<ip>202.113.22.123</ip>
          ????????<content>VC?isn't?right?here,you?should?be?traded.</content>
          ????</message>
          </guestbook>

          ????這是DTD文件,直接用Oxygen XML Editor生成的,很方便。

          <!ELEMENT?message?(#PCDATA?|?name?|?ip?|?content)*>
          <!ELEMENT?content?(#PCDATA)>
          <!ELEMENT?guestbook?(#PCDATA?|?message)*>
          <!ELEMENT?ip?(#PCDATA)>
          <!ELEMENT?name?(#PCDATA)>

          ????這是XSLT文件:

          <?xml?version="1.0"?>
          <xsl:stylesheet?xmlns:xsl="http://www.w3.org/TR/WD-xsl">
          <xsl:template?match="/">
          <html>
          <body>
          <table?border="1"?bgcolor="yellow">
          <tr>
          <th>Name</th>
          <th>IP</th>
          <th>Content</th>
          </tr>
          <xsl:for-each?select="guestbook/message">
          <tr>
          <td><xsl:value-of?select="name"/></td>
          <td><xsl:value-of?select="ip"/></td>
          <td><xsl:value-of?select="content"/></td>
          </tr>
          </xsl:for-each>
          </table>
          </body>
          </html>
          </xsl:template>
          </xsl:stylesheet>

          ????采用表格的形式組織,清晰易懂。下面是JAVA代碼。

          /*
          ?*?創建日期?2005-2-15
          ?*/
          package?com.tiantian.xmlguestbook;//com.tiantian

          import?org.jdom.Document;
          import?org.jdom.Element;
          import?org.jdom.JDOMException;
          import?org.jdom.input.SAXBuilder;
          import?org.jdom.output.*;
          import?java.io.*;

          /**
          ?*?@author?tiantian
          ?*/
          public?class?XMLguestbookBean?{

          ????public?static?void?main(String[]?args)?{
          ????????XMLguestbookBean?exam?=?new?XMLguestbookBean();//聲明XMLguestbookBean的一個實例
          ????????exam.addmessage("james",?"202.11.223.22",?"hahah");//增加一個留言,測試
          ????}

          ????public?Element?root?=?null;//定義根

          ????public?XMLguestbookBean()?{
          ????????//空的構造函數
          ????}

          ????private?void?addmessage(String?name,?String?ip,?String?content)?{
          ????????try?{
          ????????????SAXBuilder?sb?=?new?SAXBuilder();
          ????????????Document?doc?=?sb.build("guestbook.xml");
          ????????????root?=?doc.getRootElement();//取得根元素
          ????????????Element?newMessage?=?new?Element("message");
          ????????????Element?newName?=?new?Element("name");
          ????????????Element?newContent?=?new?Element("content");
          ????????????Element?newIp?=?new?Element("ip");
          ????????????newName.setText(name);?//填入名字
          ????????????newContent.setText(content);//填入設置
          ????????????newIp.setText(ip);//填入IP
          ????????????newMessage.addContent(newName);//添加名字到message
          ????????????newMessage.addContent(newIp);//添加ip地址到message
          ????????????newMessage.addContent(newContent);//添加留言內容到message
          ????????????root.addContent(newMessage);//把message添加到根上
          ????????????Format?format?=?Format.getCompactFormat();
          ????????????format.setEncoding("gb2312");?//設置xml文件的字符為gb2312
          ????????????format.setIndent("????");
          ????????????XMLOutputter?XMLOut?=?new?XMLOutputter(format);//在元素后換行,每一層元素縮排四格
          ????????????XMLOut.output(doc,?new?FileOutputStream("guestbook.xml"));//輸出到文件
          ????????}?catch?(FileNotFoundException?e)?{
          ????????????//?文件未找到
          ????????????e.printStackTrace();
          ????????}?catch?(JDOMException?e)?{
          ????????????//?JDOM異常
          ????????????e.printStackTrace();
          ????????}?catch?(IOException?e)?{
          ????????????//?IO異常
          ????????????e.printStackTrace();
          ????????}

          ????}
          }

          ????使用了Eclispe的格式化之后漂亮多了,呵呵。在Jsp/Servlet中只需用調用這個bean就行了,顯示的時候直接引用XML文件即可,是不是比上一個JSP實現簡單清晰多了呢?

          posted on 2006-11-15 18:20 lbfeng 閱讀(447) 評論(1)  編輯  收藏 所屬分類: XML技術雜談

          評論

          # re: JSP的留言簿---XML實現 2008-02-19 11:15 jinyi521
          XML文件編輯使用Oxygen XML Editor(很好用的XML編輯器,純JAVA)。

          請教一下
          Oxygen XML Editor這個插件怎么用?

          有沒有 使用說明或者幫助 最好是中文的 有的話給我發一份
          我的郵箱 : jun8092191@163.com

          在這 先謝謝 了   回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 修水县| 石台县| 阳新县| 买车| 株洲市| 澄江县| 枝江市| 自贡市| 湛江市| 仪陇县| 绥滨县| 灯塔市| 临夏县| 柳江县| 辽源市| 资中县| 兴隆县| 霞浦县| 遂宁市| 白水县| 蒙阴县| 新竹县| 周口市| 盈江县| 同心县| 晋中市| 运城市| 靖宇县| 黄浦区| 永春县| 临泉县| 石狮市| 翁牛特旗| 台湾省| 陇川县| 龙岩市| 永嘉县| 昌黎县| 禄劝| 武宣县| 临江市|