来源:http://blog.yesky.com/Blog/tiantian911/archive/2005/02/12/73848.html
最近一直在看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实现简单清晰多了呢?
最近一直在看XML,才发现XML真是个好东东,有了它,交换数据变得前所未有的方便,今天做了我的第一个XML应用,呵呵,一个基于XML技术的留言簿。
放弃了数据库,而直接使用XML来存储信息,读取后通过XSLT转换成HTML直接显示,感觉方便极了。
开发工具采用Eclipse作为Java IDE,XML操作使用JDOM,XML文件编辑使用Oxygen XML Editor(很好用的XML编辑器,纯JAVA)。
这是guestbook.xml,所有的留言都存储在这里。






















这是XSLT文件:
























采用表格的形式组织,清晰易懂。下面是JAVA代码。
































































使用了Eclispe的格式化之后漂亮多了,呵呵。在Jsp/Servlet中只需用调用这个bean就行了,显示的时候直接引用XML文件即可,是不是比上一个JSP实现简单清晰多了呢?