- 论坛徽章:
- 0
|
XML概念和应用
随着JAVA和XML的不断发展,二者事实上已经发展成为可移植的语言和可移植的数据实现者。所有关于XML一个最重要的概念是:标准的异质平台之间传输消息语言。它产生的消息(或者文档)可以通用于各种不同的平台、终端。当然,当系统接收一个XML文档后,可以又把它转换为需要的最终文档,最终文档可以是HTML、JSP或者其它形式的XML变化模式。
从下图中可以领会一些关于XML的概念。
![]()
上图中,各终端之间均以XML为传输数据的标准,随着XML这几年的发展,它已经成为各种终端之间通信的标准。
当然,XML所包含的东西绝不仅仅只有这些,下面我将在读者已经理解了XML的基本概念基础之上,深入地讨论一下以下三个关于XML的核心问题:
一、 如何产生一个XML?
二、 如何分析一个XML?为什么要分析?
三、 如何将XML转换成其它元语言?
如何生成XML?
2.1.1 XML简单示例:
一、直接书写XML文件
示例1: e:/test.xml
<?xml version="1.0" encoding="GB2312" ?>;
<book>;
<title>;理解XML</title>;
<auother>;陌生人</auother>;
<sale >;59.00</sale>;
</book>;
将该文件以.XML格式存放。
二、我们将示例一稍稍改进一些,得用JSP在生成XML文件。
示例2: /testxml.jsp
<%@ page contentType="text/xml;charset=gb2312" %>;
<?xml version="1.0" encoding="GB2312" ?>;
<book>;
<title>;理解XML</title>;
<auother>;陌生人</auother>;
<sale >;59.00</sale>;
</book>;
下图给出了示例2的jsp文件生成的XML:
![]()
导读: 1、<%@ page contentType="text/xml;charset=gb2312" %>;该语句指定了JSP页面显示为XML文件。当然我们习惯利用contentType="text/html;charset=gb2312"指定显示页面为HTML.这是二者之间的差别。
2、读者可以用IE直接打开示例1的XML文件,得到的结果和图2.1类似。
三、使用bean生成XML
好象我们又要更进一步了,使用BEAN来实现生成动态内容的JSP文件,当然作为本章的要点JSP文件的主要任务还是生成XML文件。它是对上一种方法进一步的拓展。
示例1: /WEB-INF/classes/bean/Item.java
package bean;
public class Item implements java.io.Serializable
{
private String title=null,auother=null;
private float price;
public Item(String title,String auother,float price)
{
this.title=title;
this.auother=auother;
this.price=price;
}
public String gettitle()
{
return title;
}
public float getprice()
{
return price;
}
public String getauother()
{
return auother;
}
}
示例2 WEB-INF/classes/bean/ItemOption.java
package bean;
import java.util.Iterator;
import java.util.Vector;
public class ItemOption implements java.io.Serializable
{
private Vector items=new Vector();
public ItemOption()
{
}
public Iterator getItems()
{
return items.iterator();
}
//增加cector中的对象
public void addItem(String title,String auother,float price)
{
Object elements=new Item(title,auother,price);
items.addElement(elements);
}
//移除vector中的对象
public void delItem()
{
items.removeAllElements();
}
}
导读:这两个bean的目的是提供为Vector容器增加对象、删除对象、访问容器对象的方法。值得注意的是利用迭代器Iterator机制来访问Vector的,利用迭代的好处在于:
1、 不必把容器的第一个无素(对象)当作一个特例来处理。
2、 使用迭代的方法,使得jsp页面内容更清晰明了。
当然这里使用的迭代器只是代向的,只能一个一个地检索对象。双向迭代器的用法请参考其它书籍的“列表迭代器”的用法。
示例3 /itemoption.jsp
<%@ page contentType="text/xml;charset=gb2312" %>;
<%@ page import="bean.*"%>;
<jsp:useBean id="ItemOption" scope="session" class="bean.ItemOption"/>;
<?xml version="1.0" encoding="GB2312" ?>;
<book>;
<%
ItemOption.addItem("XML渐行渐进(一)","wwlongyong",(float)20.00);
ItemOption.addItem("XML渐行渐进(二)","wwlongyong",(float)21.00);
ItemOption.addItem("XML渐行渐进(三)","wwlongyong",(float)23.00);
java.util.Iterator Itvar=ItemOption.getItems() ;
Item item=null;
%>;
<%while(Itvar.hasNext())
{
item=(Item)Itvar.next();
%>;
<title>;<%=item.gettitle()%>;</title>;
<auother>; <%=item.getauother()%>; </auother>;
<sale>;<%=item.getprice()%>;</sale>;
<%
}
ItemOption.delItem();
%>;
</book>;
导读:从这个JSP文件看出,利用bean的作用可以动态生成jsp的文件内容,其核心其实只对xml文件的显示内容做了一个动态循环。就这么简单!下图给出了以上操作的结果:
(由于上传图片数量的限制,这里无法给出图示结果。其效果可以参照上图)
最后读者可以自行考虑一下在bean 中增加一个printXml的方法,让bean生成自身的xml.从代码的可重用性上来讲,这种方法更为可取。 |
-
testxml.gif
(19.79 KB, 下载次数: 61)
图2.1 用JSP生成XML文件
-
ss.gif
(1.77 KB, 下载次数: 57)
图1 xml理解示意
|