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 阅读(441) 评论(1)  编辑  收藏 所属分类: XML技术杂谈

评论

# re: JSP的留言簿---XML实现 2008-02-19 11:15 jinyi521
XML文件编辑使用Oxygen XML Editor(很好用的XML编辑器,纯JAVA)。

请教一下
Oxygen XML Editor这个插件怎么用?

有没有 使用说明或者帮助 最好是中文的 有的话给我发一份
我的邮箱 : jun8092191@163.com

在这 先谢谢 了   回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: