XML概念和应用(一)如何生成xml

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

[size=18:b26ed2dff1][b:b26ed2dff1]XML概念和应用[/b:b26ed2dff1][/size:b26ed2dff1]

随着JAVA和XML的不断发展,二者事实上已经发展成为可移植的语言和可移植的数据实现者。所有关于XML一个最重要的概念是:[color=red:b26ed2dff1]标准的异质平台之间传输消息语言[/color:b26ed2dff1]。它产生的消息(或者文档)可以通用于各种不同的平台、终端。当然,当系统接收一个XML文档后,可以又把它转换为需要的最终文档,最终文档可以是HTML、JSP或者其它形式的XML变化模式。

从下图中可以领会一些关于XML的概念。

[img:b26ed2dff1]http://www.chinaunix.net/forum/uploadfile/ss.gif[/img:b26ed2dff1]

上图中,各终端之间均以XML为传输数据的标准,随着XML这几年的发展,它已经成为各种终端之间通信的标准。

当然,XML所包含的东西绝不仅仅只有这些,下面我将在读者已经理解了XML的基本概念基础之上,深入地讨论一下以下三个关于XML的核心问题:

一、 如何产生一个XML?

二、 如何分析一个XML?为什么要分析?

三、 如何将XML转换成其它元语言?

[b:b26ed2dff1] [size=18:b26ed2dff1]如何生成XML?[/size:b26ed2dff1][/b:b26ed2dff1]

[b:b26ed2dff1]2.1.1 XML简单示例:[/b:b26ed2dff1]

一、直接书写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:

[img:b26ed2dff1]http://www.chinaunix.net/forum/uploadfile/testxml.gif[/img:b26ed2dff1]

导读: 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;

}

}

示例2WEB-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.从代码的可重用性上来讲,这种方法更为可取。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航