﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-执着的笨蛋-随笔分类-xml</title><link>http://www.blogjava.net/lcs/category/26137.html</link><description>黑暗的SH！灰暗的人生！证明了我的心中还有一些光明！

</description><language>zh-cn</language><lastBuildDate>Thu, 14 Feb 2008 08:28:24 GMT</lastBuildDate><pubDate>Thu, 14 Feb 2008 08:28:24 GMT</pubDate><ttl>60</ttl><item><title>在Java中写文件的中文问题[转]</title><link>http://www.blogjava.net/lcs/archive/2008/02/14/179922.html</link><dc:creator>lk</dc:creator><author>lk</author><pubDate>Thu, 14 Feb 2008 06:20:00 GMT</pubDate><guid>http://www.blogjava.net/lcs/archive/2008/02/14/179922.html</guid><wfw:comment>http://www.blogjava.net/lcs/comments/179922.html</wfw:comment><comments>http://www.blogjava.net/lcs/archive/2008/02/14/179922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lcs/comments/commentRss/179922.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lcs/services/trackbacks/179922.html</trackback:ping><description><![CDATA[<p>写出来的文件用浏览器打开后都是乱码。已经在XML的最前面加上了<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
而且浏览器的编码也是UTF-8的，这就排除了浏览器的问题。<br />
再用VIM打开，发现用GB2312看是没问题的，换成:set encoding=UTF-8以后开始乱码<br />
这时我尝试将字符串转码后写入文件，但在UTF-8，GBK和ISO8859_1中间怎么转也没有用。<br />
忽然想起前几天yiyayoyo同学和我提过Java写文件默认编码的问题，于是开始google，发现我用的写文件的方式无法指定编码，于是换用另一种写文件的方式指定UTF-8，遂搞定。代码如下：</p>
<p>老代码：<br />
PrintWriter pw = new PrintWriter(new FileWriter(path));<br />
pw.print(content);<br />
pw.close();</p>
<p>新代码：<br />
FileOutputStream fos = new FileOutputStream(path);<br />
Writer out = new OutputStreamWriter(fos, "UTF-8");<br />
out.write(content);<br />
out.close();<br />
fos.close();</p>
<p>顺便抱怨一句，Java中写文件的方式还真是多阿多&#8230;&#8230;我等一两年经验的小程序员看了都眼晕 </p>
<p>&nbsp;&nbsp; 库卡 说：<br />
&nbsp; 读代码也有编码的问题，如果要读取UTF-8的文件，应采用如下方式覆盖默认编码：<br />
&nbsp; FileInputStream fis = new FileInputStream(s);<br />
&nbsp; StringBuffer content = new StringBuffer();<br />
&nbsp; DataInputStream in = new DataInputStream(fis);<br />
&nbsp; BufferedReader d = new BufferedReader(new InputStreamReader(in, "UTF-8"));<br />
&nbsp; String line = null;<br />
&nbsp;&nbsp; while ((line = d.readLine()) != null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; content.append(line + "\n");<br />
&nbsp; d.close();<br />
&nbsp; in.close();<br />
&nbsp; fis.close();</p>
<img src ="http://www.blogjava.net/lcs/aggbug/179922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lcs/" target="_blank">lk</a> 2008-02-14 14:20 <a href="http://www.blogjava.net/lcs/archive/2008/02/14/179922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用XMLBean轻轻松松读写XML </title><link>http://www.blogjava.net/lcs/archive/2007/11/22/162316.html</link><dc:creator>lk</dc:creator><author>lk</author><pubDate>Thu, 22 Nov 2007 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/lcs/archive/2007/11/22/162316.html</guid><wfw:comment>http://www.blogjava.net/lcs/comments/162316.html</wfw:comment><comments>http://www.blogjava.net/lcs/archive/2007/11/22/162316.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/lcs/comments/commentRss/162316.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lcs/services/trackbacks/162316.html</trackback:ping><description><![CDATA[<span class="a14c" id="zoom">&nbsp;
<p style="text-indent: 2em">
<center><span style="font-size: 20px"><strong>利用XMLBean轻轻松松读写XML</strong></span></center><br />
<center>作者：叶枫</center><br />
<br />
<br />
<br />
<span style="color: red">版权声明：本文可以自由转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明</span><br />
作者:叶枫(<a href="http://blog.matrix.org.cn/page/叶枫" target="_new">http://blog.matrix.org.cn/page/叶枫</a>)<br />
原文:[http://www.matrix.org.cn/resource/article/44/44027_XMLBean.html]http://www.matrix.org.cn/resource/article/44/44027_XMLBean.html[/url]<br />
关键字:XML XMLBean Parser<br />
<br />
<strong><span style="font-size: 16px">一、关于XML解析</span></strong><br />
<br />
&nbsp;&nbsp;XML在Java应用程序里变得越来越重要, 广泛应用于数据存储和<br />
交换. 比如我们常见的配置文件,都是以XML方式存储的. XML还应用<br />
于Java Message Service和Web Services等技术作为数据交换.<br />
因此,正确读写XML文档是XML应用的基础.<br />
&nbsp;&nbsp;Java提供了SAX和DOM两种方式用于解析XML,但即便如此,要读写一个<br />
稍微复杂的XML,也不是一件容易的事.<br />
<br />
<strong><span style="font-size: 16px">二、XMLBean简介</span></strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Hibernate已经成为目前流行的面向Java环境的对象/关系数据库映射工具.<br />
在Hibernate等对象/关系数据库映射工具出现之前,对数据库的操作是<br />
通过JDBC来实现的,对数据库的任何操作,开发人员都要自己写SQL语句<br />
来实现. 对象/关系数据库映射工具出现后,对数据库的操作转成对<br />
JavaBean的操作,极大方便了数据库开发. 所以如果有一个类似的工具能够<br />
实现将对XML的读写转成对JavaBean的操作,将会简化XML的读写,即使对XML<br />
不熟悉的开发人员也能方便地读写XML. 这个工具就是XMLBean.<br />
<br />
<strong><span style="font-size: 16px">三、准备XMLBean和XML文档</span></strong><br />
<br />
&nbsp;&nbsp; XMLBean是Apache的一个开源项目,可以从http://www.apache.org下载,<br />
最新的版本是2.0. 解压后目录如下:<br />
<span style="color: blue">xmlbean2.0.0<br />
&nbsp;&nbsp;&nbsp;&nbsp; +---bin<br />
&nbsp;&nbsp;&nbsp;&nbsp; +---docs<br />
&nbsp;&nbsp;&nbsp;&nbsp; +---lib<br />
&nbsp;&nbsp;&nbsp;&nbsp; +---samples<br />
&nbsp;&nbsp;&nbsp;&nbsp; +---schemas</span><br />
<br />
另外还要准备一个XML文档(customers.xml),<br />
在本文的例子里,我们将对这个文档进行读写操作. 文档源码如下:<br />
<pre class="overflow"><br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;Customers&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;customer&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;1&lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;gender&gt;female&lt;/gender&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;firstname&gt;Jessica&lt;/firstname&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;lastname&gt;Lim&lt;/lastname&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;phoneNumber&gt;1234567&lt;/phoneNumber&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;address&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;primaryAddress&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;postalCode&gt;350106&lt;/postalCode&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;addressLine1&gt;#25-1&lt;/addressLine1&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;addressLine2&gt;SHINSAYAMA 2-CHOME&lt;/addressLine2&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/primaryAddress&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;billingAddress&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;receiver&gt;Ms Danielle&lt;/receiver&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;postalCode&gt;350107&lt;/postalCode&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;addressLine1&gt;#167&lt;/addressLine1&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;addressLine2&gt;NORTH TOWER HARBOUR CITY&lt;/addressLine2&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/billingAddress&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/address&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/customer&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;customer&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;2&lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;gender&gt;male&lt;/gender&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;firstname&gt;David&lt;/firstname&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;lastname&gt;Bill&lt;/lastname&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;phoneNumber&gt;808182&lt;/phoneNumber&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;address&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;primaryAddress&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;postalCode&gt;319087&lt;/postalCode&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;addressLine1&gt;1033 WS St.&lt;/addressLine1&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;addressLine2&gt;Tima Road&lt;/addressLine2&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/primaryAddress&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;billingAddress&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;receiver&gt;Mr William&lt;/receiver&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;postalCode&gt;672993&lt;/postalCode&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;addressLine1&gt;1033 WS St.&lt;/addressLine1&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;addressLine2&gt;Tima Road&lt;/addressLine2&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/billingAddress&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/address&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/customer&gt;<br />
&lt;/Customers&gt;<br />
</pre>
<br />
<br />
这是一个客户的数据模型,每个客户都有客户编号(ID),姓名,性别(gender),<br />
电话号码(phoneNumber)和地址,其中地址有两个: 首要地址(PrimaryAddress)<br />
和帐单地址(BillingAddress),每个地址有邮编,地址1,和地址2组成.<br />
其中帐单地址还有收件人(receiver).<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;此外,还要准备一个配置文件(文件名customer.xsdconfig),这个文件的<br />
作用我后面会讲,它的内容如下:<br />
<pre class="overflow"><br />
&lt;xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config"&gt;<br />
<br />
&nbsp;&nbsp;&lt;xb:namespace&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;xb:package&gt;sample.xmlbean&lt;/xb:package&gt;<br />
&nbsp;&nbsp;&lt;/xb:namespace&gt;<br />
<br />
&lt;/xb:config&gt;<br />
</pre>
<br />
<br />
<strong><span style="font-size: 16px">四、XMLBean使用步骤</span></strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;和其他面向Java环境的对象/关系数据库映射工具的使用步骤一样,<br />
在正式使用XMLBean前,我们要作两个准备.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;1. 生成XML Schema文件<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 什么是XML Schema文件? 正常情况下,每个XML文件都有一个Schema文件,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XML Schema文件是一个XML的约束文件,它定义了XML文件的结构和元素.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以及对元素和结构的约束. 通俗地讲,如果说XML文件是数据库里的记录,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 那么Schema就是表结构定义.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为什么需要这个文件? XMLBean需要通过这个文件知道一个XML文件的<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结构以及约束,比如数据类型等. 利用这个Schema文件,XMLBean将会产生<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一系列相关的Java Classes来实现对XML的操作. 而作为开发人员,则是<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 利用XMLBean产生的Java Classes来完成对XML的操作而不需要SAX或DOM.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 怎样产生这个Schema文件呢? 如果对于熟悉XML的开发人员,可以自己来<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 写这个Schema文件,对于不熟悉XML的开发人员,可以通过一些工具来完成.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 比较有名的如XMLSPY和Stylus Studio都可以通过XML文件来生成Schema<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件. 加入我们已经生成这个Schema文件(customer.xsd):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elementFormDefault="qualified"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="Customers"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:complexType&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element maxOccurs="unbounded" name="customer"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="customerType"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:complexType&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:element&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:complexType name="customerType"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="id" type="xs:int"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="gender" type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="firstname" type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="lastname" type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="phoneNumber" type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="address" type="addressType"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:complexType&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:complexType name="addressType"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="primaryAddress" type="primaryAddressType"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="billingAddress" type="billingAddressType"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:complexType&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:complexType name="primaryAddressType"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="postalCode" type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="addressLine1" type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="addressLine2" type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:complexType&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:complexType name="billingAddressType"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;xs:element name="receiver" type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="postalCode" type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="addressLine1" type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xs:element name="addressLine2" type="xs:string"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:sequence&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:complexType&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/xs:schema&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </pre>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;2. 利用scomp来生成Java Classes<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scomp是XMLBean提供的一个编译工具,它在bin的目录下. 通过这个工具,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们可以将以上的Schema文件生成Java Classes.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scomp的语法如下:-<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scomp [options] [dirs]* [schemaFile.xsd]* [service.wsdl]* [config.xsdconfig]*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </pre>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主要参数说明:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -src [dir]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 生成的Java Classes存放目录<br />
&nbsp;&nbsp;&nbsp;&nbsp; -srconly&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 不编译Java Classes,不产生Jar文件<br />
&nbsp;&nbsp;&nbsp;&nbsp; -out [jarFileName]&nbsp;&nbsp;-- 生成的Jar文件,缺省是xmltypes.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -compiler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Java编译器的路径,即Javac的位置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; schemaFile.xsd&nbsp;&nbsp;&nbsp;&nbsp;-- XML Schema文件位置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.xsdconfig&nbsp;&nbsp; -- xsdconfig文件的位置, 这个文件主要用来制定生成的Java Class<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的一些文件名规则和Package的名称,在本文,package是sample.xmlbean<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在本文,我是这样运行的:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scomp -src build\src&nbsp;&nbsp;-out build\customerXmlBean.jar schema\customer.xsd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -compiler C:\jdk142_04\bin\javac customer.xsdconfig<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </pre>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个命令行的意思是告诉scomp生成customerXmlBean.jar,放在build目录下,同时<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 生成源代码放在build\src下, Schema文件是customer.xsd,xsdconfig文件是customer.xsdconfig.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实, 生成的Java源代码没有多大作用,我们要的是jar文件.我们先看一下build\src\sample\xmlbean下生成的Classes.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CustomersDocument.java&nbsp;&nbsp;&nbsp;&nbsp;-- 整个XML文档的Java Class映射<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CustomerType.java&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 节点sustomer的映射<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddressType.java&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 节点address的映射<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BillingAddressType.java&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 节点billingAddress的映射<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrimaryAddressType.java&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 节点primaryAddress的映射<br />
&nbsp;&nbsp;&nbsp;&nbsp; </pre>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好了,到此我们所有的准备工作已经完成了. 下面就开始进入重点：利用刚才生成的jar文件读写XML.<br />
<br />
<strong><span style="font-size: 16px">五、利用XMLBean读XML文件</span></strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;新建一个Java Project,将XMLBean2.0.0\lib\下的Jar文件和刚才我们生成的customerXmlBean.jar加入<br />
&nbsp;&nbsp;&nbsp;&nbsp;到Project的ClassPath.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;新建一个Java Class: CustomerXMLBean.&nbsp;&nbsp;源码如下:<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;package com.sample.reader;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;import java.io.File;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;import sample.xmlbean.*;<br />
&nbsp;&nbsp;&nbsp;&nbsp;import org.apache.commons.beanutils.BeanUtils;<br />
&nbsp;&nbsp;&nbsp;&nbsp;import org.apache.xmlbeans.XmlOptions;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public class CustomerXMLBean {<br />
&nbsp;&nbsp;&nbsp;&nbsp;private String filename = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public CustomerXMLBean(String filename) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.filename = filename;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void customerReader() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File xmlFile = new File(filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CustomerType[] customers = doc.getCustomers().getCustomerArray();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; customers.length; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CustomerType customer = customers[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("Customer#" + i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("Customer ID:" + customer.getId());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("First name:" + customer.getFirstname());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("Last name:" + customer.getLastname());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("Gender:" + customer.getGender());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("PhoneNumber:" + customer.getPhoneNumber());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Primary address<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrimaryAddressType primaryAddress = customer.getAddress().getPrimaryAddress();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("PrimaryAddress:");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("PostalCode:" + primaryAddress.getPostalCode());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("AddressLine1:" + primaryAddress.getAddressLine1());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("AddressLine2:" + primaryAddress.getAddressLine2());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Billing address<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BillingAddressType billingAddress = customer.getAddress().getBillingAddress();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("BillingAddress:");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("Receiver:" + billingAddress.getReceiver());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("PostalCode:" + billingAddress.getPostalCode());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("AddressLine1:" + billingAddress.getAddressLine1());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;println("AddressLine2:" + billingAddress.getAddressLine2());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;private void println(String str) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(str);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp; public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers.xml";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; customerXMLBean.customerReader();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</pre>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;运行它,参看输出结果:<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Customer#0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Customer ID:1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; First name:Jessica<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Last name:Lim<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gender:female<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PhoneNumber:1234567<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrimaryAddress:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PostalCode:350106<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddressLine1:#25-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddressLine2:SHINSAYAMA 2-CHOME<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BillingAddress:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Receiver:Ms Danielle<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PostalCode:350107<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddressLine1:#167<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddressLine2:NORTH TOWER HARBOUR CITY<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Customer#1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Customer ID:2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; First name:David<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Last name:Bill<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gender:male<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PhoneNumber:808182<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrimaryAddress:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PostalCode:319087<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddressLine1:1033 WS St.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddressLine2:Tima Road<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BillingAddress:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Receiver:Mr William<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PostalCode:672993<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddressLine1:1033 WS St.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddressLine2:Tima Road<br />
&nbsp;&nbsp;&nbsp;&nbsp;</pre>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;怎么样,是不是很轻松? XMLBean的威力.<br />
<br />
<strong><span style="font-size: 16px">六、利用XMLBean写XML文件</span></strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;利用XMLBean创建一个XML文档也是一件轻而易举的事.我们再增加一个Method,<br />
&nbsp;&nbsp;&nbsp;&nbsp;请看一下的Java Class:<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;public void createCustomer() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Create Document<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CustomersDocument doc = CustomersDocument.Factory.newInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Add new customer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CustomerType customer = doc.addNewCustomers().addNewCustomer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// set customer info<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customer.setId(3);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customer.setFirstname("Jessica");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customer.setLastname("Lim");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customer.setGender("female");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customer.setPhoneNumber("1234567");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Add new address<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AddressType address = customer.addNewAddress();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Add new PrimaryAddress<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrimaryAddressType primaryAddress = address.addNewPrimaryAddress();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;primaryAddress.setPostalCode("350106");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;primaryAddress.setAddressLine1("#25-1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;primaryAddress.setAddressLine2("SHINSAYAMA 2-CHOME");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Add new BillingAddress<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BillingAddressType billingAddress = address.addNewBillingAddress();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;billingAddress.setReceiver("Ms Danielle");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;billingAddress.setPostalCode("350107");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;billingAddress.setAddressLine1("#167");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;billingAddress.setAddressLine2("NORTH TOWER HARBOUR CITY");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File xmlFile = new File(filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doc.save(xmlFile);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</pre>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;修改main method.<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customerXMLBean.createCustomer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</pre>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;运行,打开customers_new.xml:<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;Customers&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;customer&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;3&lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;gender&gt;female&lt;/gender&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;firstname&gt;Jessica&lt;/firstname&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;lastname&gt;Lim&lt;/lastname&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;phoneNumber&gt;1234567&lt;/phoneNumber&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;address&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;primaryAddress&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;postalCode&gt;350106&lt;/postalCode&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;addressLine1&gt;#25-1&lt;/addressLine1&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;addressLine2&gt;SHINSAYAMA 2-CHOME&lt;/addressLine2&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/primaryAddress&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;billingAddress&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;receiver&gt;Ms Danielle&lt;/receiver&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;postalCode&gt;350107&lt;/postalCode&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;addressLine1&gt;#167&lt;/addressLine1&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;addressLine2&gt;NORTH TOWER HARBOUR CITY&lt;/addressLine2&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/billingAddress&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/address&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/customer&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Customers&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</pre>
<br />
<br />
<br />
<strong><span style="font-size: 16px">七、利用XMLBean修改XML文件</span></strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;我们再增加一个Method:<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void updateCustomer(int id,String lastname) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File xmlFile = new File(filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CustomerType[] customers = doc.getCustomers().getCustomerArray();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; customers.length; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CustomerType customer = customers[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(customer.getId()==id){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customer.setLastname(lastname);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doc.save(xmlFile);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</pre>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;main method:<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp; String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;customerXMLBean.updateCustomer(3,"last");<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</pre>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;运行之后,我们将会看到客户编号为3的客户的lastname已经改为last.<br />
<br />
<strong><span style="font-size: 16px">八、利用XMLBean删除一个customer</span></strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;再增加一个Method:<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;public void deleteCustomer(int id) {<br />
&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File xmlFile = new File(filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp; CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);<br />
&nbsp;&nbsp;&nbsp;&nbsp;CustomerType[] customers = doc.getCustomers().getCustomerArray();<br />
<br />
&nbsp;&nbsp; for (int i = 0; i &lt; customers.length; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CustomerType customer = customers[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(customer.getId()==id){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;customer.setNil() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; doc.save(xmlFile);<br />
&nbsp;&nbsp; } catch (Exception ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp; }<br />
</pre>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; main method:<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<pre class="overflow"><br />
&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;customerXMLBean.deleteCustomer(3);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</pre>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
运行,我们将会看到客户编号为3的客户的资料已经被删除.<br />
<br />
<strong><span style="font-size: 16px">九、查询XML</span></strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;除了本文在以上讲述的,利用XMLBean能轻轻松松完成XML的读写操作外,结合XPath和XQuery,<br />
&nbsp;&nbsp; XMLBean还能完成象SQL查询数据库一样方便地查询XML数据. 关于XML查询以及如何创建XML数据库, 我将在另一篇文章里讨论.<br />
<br />
<br />
<br />
<strong><span style="font-size: 16px">十、结束语</span></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;XMLBean能帮助我们轻易读写XML,这将有助于我们降低XML的学习和使用,有了这个基础,<br />
&nbsp;&nbsp;&nbsp;&nbsp;开发人员将为学习更多地XML相关技术和Web Services,JMS等其他J2EE技术打下良好地基础.<br />
<br />
<br />
<strong>关于作者：</strong><br />
叶枫：热爱Java和Oracle. 在软件开发有近10年, 目前在国外一家美国大公司担任SA, 负责技术研究。作者Blog：<a href="http://blog.matrix.org.cn/page/叶枫" target="_new">http://blog.matrix.org.cn/page/叶枫</a><br />
</span>
<img src ="http://www.blogjava.net/lcs/aggbug/162316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lcs/" target="_blank">lk</a> 2007-11-22 11:08 <a href="http://www.blogjava.net/lcs/archive/2007/11/22/162316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java  sax 解析 xml</title><link>http://www.blogjava.net/lcs/archive/2007/11/22/162304.html</link><dc:creator>lk</dc:creator><author>lk</author><pubDate>Thu, 22 Nov 2007 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/lcs/archive/2007/11/22/162304.html</guid><wfw:comment>http://www.blogjava.net/lcs/comments/162304.html</wfw:comment><comments>http://www.blogjava.net/lcs/archive/2007/11/22/162304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lcs/comments/commentRss/162304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lcs/services/trackbacks/162304.html</trackback:ping><description><![CDATA[虽然有些方法没用，但还是保留了下来！String&nbsp; str是我加的<br />
<br />
代码：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.xml.sax.Attributes;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.xml.sax.SAXException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.xml.sax.Locator;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.xml.sax.ContentHandler;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.xml.sax.InputSource;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.xml.sax.helpers.DefaultHandler;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.parsers.SAXParser;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.parsers.SAXParserFactory;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_347_2465_Open_Image" onclick="this.style.display='none'; Codehighlighter1_347_2465_Open_Text.style.display='none'; Codehighlighter1_347_2465_Closed_Image.style.display='inline'; Codehighlighter1_347_2465_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_347_2465_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_347_2465_Closed_Text.style.display='none'; Codehighlighter1_347_2465_Open_Image.style.display='inline'; Codehighlighter1_347_2465_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TestSAX&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;DefaultHandler</span><span id="Codehighlighter1_347_2465_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_347_2465_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;StringBuffer&nbsp;buf;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;str;<br />
<img id="Codehighlighter1_416_431_Open_Image" onclick="this.style.display='none'; Codehighlighter1_416_431_Open_Text.style.display='none'; Codehighlighter1_416_431_Closed_Image.style.display='inline'; Codehighlighter1_416_431_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_416_431_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_416_431_Closed_Text.style.display='none'; Codehighlighter1_416_431_Open_Image.style.display='inline'; Codehighlighter1_416_431_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;TestSAX()</span><span id="Codehighlighter1_416_431_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_416_431_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setDocumentLocator(Locator&nbsp;locator){}</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_538_613_Open_Image" onclick="this.style.display='none'; Codehighlighter1_538_613_Open_Text.style.display='none'; Codehighlighter1_538_613_Closed_Image.style.display='inline'; Codehighlighter1_538_613_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_538_613_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_538_613_Closed_Text.style.display='none'; Codehighlighter1_538_613_Open_Image.style.display='inline'; Codehighlighter1_538_613_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;startDocument()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;SAXException</span><span id="Codehighlighter1_538_613_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_538_613_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuffer();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">*******开始解析文档*******</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_663_714_Open_Image" onclick="this.style.display='none'; Codehighlighter1_663_714_Open_Text.style.display='none'; Codehighlighter1_663_714_Closed_Image.style.display='inline'; Codehighlighter1_663_714_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_663_714_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_663_714_Closed_Text.style.display='none'; Codehighlighter1_663_714_Open_Image.style.display='inline'; Codehighlighter1_663_714_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;endDocument()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;SAXException</span><span id="Codehighlighter1_663_714_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_663_714_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">*******文档解析结束*******</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_778_849_Open_Image" onclick="this.style.display='none'; Codehighlighter1_778_849_Open_Text.style.display='none'; Codehighlighter1_778_849_Closed_Image.style.display='inline'; Codehighlighter1_778_849_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_778_849_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_778_849_Closed_Text.style.display='none'; Codehighlighter1_778_849_Open_Image.style.display='inline'; Codehighlighter1_778_849_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;startPrefixMapping(&nbsp;String&nbsp;prefix,&nbsp;String&nbsp;uri&nbsp;)</span><span id="Codehighlighter1_778_849_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_778_849_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;前缀映射:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;prefix&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;开始!</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;它的URI是:</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;uri);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_899_949_Open_Image" onclick="this.style.display='none'; Codehighlighter1_899_949_Open_Text.style.display='none'; Codehighlighter1_899_949_Closed_Image.style.display='inline'; Codehighlighter1_899_949_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_899_949_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_899_949_Closed_Text.style.display='none'; Codehighlighter1_899_949_Open_Image.style.display='inline'; Codehighlighter1_899_949_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;endPrefixMapping(&nbsp;String&nbsp;prefix&nbsp;)</span><span id="Codehighlighter1_899_949_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_899_949_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;前缀映射:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">prefix</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;结束!</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;processingInstruction(&nbsp;String&nbsp;target,&nbsp;String&nbsp;instruction&nbsp;)throws&nbsp;SAXException{}<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;ignorableWhitespace(&nbsp;char[]&nbsp;chars,&nbsp;int&nbsp;start,&nbsp;int&nbsp;length&nbsp;)&nbsp;throws&nbsp;SAXException&nbsp;{}<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;skippedEntity(&nbsp;String&nbsp;name&nbsp;)&nbsp;throws&nbsp;SAXException&nbsp;{}</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1310_1514_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1310_1514_Open_Text.style.display='none'; Codehighlighter1_1310_1514_Closed_Image.style.display='inline'; Codehighlighter1_1310_1514_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1310_1514_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1310_1514_Closed_Text.style.display='none'; Codehighlighter1_1310_1514_Open_Image.style.display='inline'; Codehighlighter1_1310_1514_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;startElement(String&nbsp;namespaceURI,String&nbsp;localName,String&nbsp;qName,Attributes&nbsp;atts)</span><span id="Codehighlighter1_1310_1514_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1310_1514_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">*******开始解析元素*******</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">元素名</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">qName);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1433_1511_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1433_1511_Open_Text.style.display='none'; Codehighlighter1_1433_1511_Closed_Image.style.display='inline'; Codehighlighter1_1433_1511_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1433_1511_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1433_1511_Closed_Text.style.display='none'; Codehighlighter1_1433_1511_Open_Image.style.display='inline'; Codehighlighter1_1433_1511_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">atts.getLength();i</span><span style="color: #000000">++</span><span style="color: #000000">)</span><span id="Codehighlighter1_1433_1511_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1433_1511_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">元素名</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">atts.getLocalName(i)</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">属性值</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">atts.getValue(i));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1615_1929_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1615_1929_Open_Text.style.display='none'; Codehighlighter1_1615_1929_Closed_Image.style.display='inline'; Codehighlighter1_1615_1929_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1615_1929_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1615_1929_Closed_Text.style.display='none'; Codehighlighter1_1615_1929_Open_Image.style.display='inline'; Codehighlighter1_1615_1929_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;endElement(String&nbsp;namespaceURI,String&nbsp;localName,String&nbsp;fullName&nbsp;)</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;SAXException</span><span id="Codehighlighter1_1615_1929_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1615_1929_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf.trimToSize();</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;buf.toString();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">buf&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">buf</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;||&nbsp;length&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">buf.length());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">str&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">str.trim()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;||&nbsp;length&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">str.trim().length());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf.delete(</span><span style="color: #000000">0</span><span style="color: #000000">,buf.length());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">******</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">namespaceURI</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">元素解析结束</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">localName</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">********</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">fullName);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_2014_2078_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2014_2078_Open_Text.style.display='none'; Codehighlighter1_2014_2078_Closed_Image.style.display='inline'; Codehighlighter1_2014_2078_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2014_2078_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2014_2078_Closed_Text.style.display='none'; Codehighlighter1_2014_2078_Open_Image.style.display='inline'; Codehighlighter1_2014_2078_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;characters(&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">[]&nbsp;chars,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;start,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;length&nbsp;)</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;SAXException</span><span id="Codehighlighter1_2014_2078_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2014_2078_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">将元素内容累加到StringBuffer中&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf.append(chars,start,length);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_2121_2463_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2121_2463_Open_Text.style.display='none'; Codehighlighter1_2121_2463_Closed_Image.style.display='inline'; Codehighlighter1_2121_2463_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2121_2463_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2121_2463_Closed_Text.style.display='none'; Codehighlighter1_2121_2463_Open_Image.style.display='inline'; Codehighlighter1_2121_2463_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String&nbsp;args[])</span><span id="Codehighlighter1_2121_2463_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2121_2463_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_2128_2311_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2128_2311_Open_Text.style.display='none'; Codehighlighter1_2128_2311_Closed_Image.style.display='inline'; Codehighlighter1_2128_2311_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2128_2311_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2128_2311_Closed_Text.style.display='none'; Codehighlighter1_2128_2311_Open_Image.style.display='inline'; Codehighlighter1_2128_2311_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span id="Codehighlighter1_2128_2311_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2128_2311_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SAXParserFactory&nbsp;sf&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SAXParserFactory.newInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SAXParser&nbsp;sp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sf.newSAXParser();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TestSAX&nbsp;testsax</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TestSAX();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp.parse(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;InputSource(</span><span style="color: #000000">"</span><span style="color: #000000">test1.xml</span><span style="color: #000000">"</span><span style="color: #000000">),testsax);<br />
<img id="Codehighlighter1_2332_2361_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2332_2361_Open_Text.style.display='none'; Codehighlighter1_2332_2361_Closed_Image.style.display='inline'; Codehighlighter1_2332_2361_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2332_2361_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2332_2361_Closed_Text.style.display='none'; Codehighlighter1_2332_2361_Open_Image.style.display='inline'; Codehighlighter1_2332_2361_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(IOException&nbsp;e)</span><span id="Codehighlighter1_2332_2361_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2332_2361_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;<br />
<img id="Codehighlighter1_2383_2412_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2383_2412_Open_Text.style.display='none'; Codehighlighter1_2383_2412_Closed_Image.style.display='inline'; Codehighlighter1_2383_2412_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2383_2412_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2383_2412_Closed_Text.style.display='none'; Codehighlighter1_2383_2412_Open_Image.style.display='inline'; Codehighlighter1_2383_2412_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(SAXException&nbsp;e)</span><span id="Codehighlighter1_2383_2412_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2383_2412_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;<br />
<img id="Codehighlighter1_2431_2460_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2431_2460_Open_Text.style.display='none'; Codehighlighter1_2431_2460_Closed_Image.style.display='inline'; Codehighlighter1_2431_2460_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2431_2460_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2431_2460_Closed_Text.style.display='none'; Codehighlighter1_2431_2460_Open_Image.style.display='inline'; Codehighlighter1_2431_2460_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(Exception&nbsp;e)</span><span id="Codehighlighter1_2431_2460_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2431_2460_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<br />
xml文件，我读的时候有错误，用了自己的，希望其他人比我幸运！<br />
代码：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="GB2312"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">row</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">person</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">王小明</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">college</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">信息学院</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">college</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">telephone</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">6258113</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">telephone</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">notes</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">男,1955年生,博士，95年调入海南大学</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">notes</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">person</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">row</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">　</span></div>
<img src ="http://www.blogjava.net/lcs/aggbug/162304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lcs/" target="_blank">lk</a> 2007-11-22 10:44 <a href="http://www.blogjava.net/lcs/archive/2007/11/22/162304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 读xml文件例子</title><link>http://www.blogjava.net/lcs/archive/2007/11/21/162088.html</link><dc:creator>lk</dc:creator><author>lk</author><pubDate>Wed, 21 Nov 2007 06:47:00 GMT</pubDate><guid>http://www.blogjava.net/lcs/archive/2007/11/21/162088.html</guid><wfw:comment>http://www.blogjava.net/lcs/comments/162088.html</wfw:comment><comments>http://www.blogjava.net/lcs/archive/2007/11/21/162088.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lcs/comments/commentRss/162088.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lcs/services/trackbacks/162088.html</trackback:ping><description><![CDATA[xml文件：<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="GB2312"&nbsp;standalone="no"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">books</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">book&nbsp;</span><span style="color: #ff0000">email</span><span style="color: #0000ff">="zhoujunhui"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">rjzjh</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">price</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jjjjjj</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">price</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">book</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">books</span><span style="color: #0000ff">&gt;</span></div>
<br />
代码：<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.FileInputStream;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.FileNotFoundException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.InputStream;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.parsers.DocumentBuilder;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.parsers.DocumentBuilderFactory;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.parsers.ParserConfigurationException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">下面主要是org.xml.sax包的类</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.w3c.dom.Document;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.w3c.dom.Element;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.w3c.dom.Node;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.w3c.dom.NodeList;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.xml.sax.SAXException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_461_2456_Open_Image" onclick="this.style.display='none'; Codehighlighter1_461_2456_Open_Text.style.display='none'; Codehighlighter1_461_2456_Closed_Image.style.display='inline'; Codehighlighter1_461_2456_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_461_2456_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_461_2456_Closed_Text.style.display='none'; Codehighlighter1_461_2456_Open_Image.style.display='inline'; Codehighlighter1_461_2456_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;DomParse&nbsp;</span><span id="Codehighlighter1_461_2456_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_461_2456_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_482_2390_Open_Image" onclick="this.style.display='none'; Codehighlighter1_482_2390_Open_Text.style.display='none'; Codehighlighter1_482_2390_Closed_Image.style.display='inline'; Codehighlighter1_482_2390_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_482_2390_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_482_2390_Closed_Text.style.display='none'; Codehighlighter1_482_2390_Open_Image.style.display='inline'; Codehighlighter1_482_2390_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;DomParse()</span><span id="Codehighlighter1_482_2390_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_482_2390_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">（1）得到DOM解析器的工厂实例</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilderFactory&nbsp;domfac</span><span style="color: #000000">=</span><span style="color: #000000">DocumentBuilderFactory.newInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">得到javax.xml.parsers.DocumentBuilderFactory;类的实例就是我们要的解析器工厂</span><span style="color: #008000"><br />
<img id="Codehighlighter1_644_2151_Open_Image" onclick="this.style.display='none'; Codehighlighter1_644_2151_Open_Text.style.display='none'; Codehighlighter1_644_2151_Closed_Image.style.display='inline'; Codehighlighter1_644_2151_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_644_2151_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_644_2151_Closed_Text.style.display='none'; Codehighlighter1_644_2151_Open_Image.style.display='inline'; Codehighlighter1_644_2151_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_644_2151_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_644_2151_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">（2）从DOM工厂获得DOM解析器</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilder&nbsp;dombuilder</span><span style="color: #000000">=</span><span style="color: #000000">domfac.newDocumentBuilder();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">通过javax.xml.parsers.DocumentBuilderFactory实例的静态方法newDocumentBuilder()得到DOM解析器<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">（3）把要解析的XML文档转化为输入流，以便DOM解析器解析它</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileInputStream(</span><span style="color: #000000">"</span><span style="color: #000000">test1.xml</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">（4）解析XML文档的输入流，得到一个Document</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;doc</span><span style="color: #000000">=</span><span style="color: #000000">dombuilder.parse(is);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">由XML文档的输入流得到一个org.w3c.dom.Document对象，以后的处理都是对Document对象进行的<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">（5）得到XML文档的根节点</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;root</span><span style="color: #000000">=</span><span style="color: #000000">doc.getDocumentElement();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在DOM中只有根节点是一个org.w3c.dom.Element对象。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">（6）得到节点的子节点</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NodeList&nbsp;books</span><span style="color: #000000">=</span><span style="color: #000000">root.getChildNodes();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1220_2147_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1220_2147_Open_Text.style.display='none'; Codehighlighter1_1220_2147_Closed_Image.style.display='inline'; Codehighlighter1_1220_2147_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1220_2147_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1220_2147_Closed_Text.style.display='none'; Codehighlighter1_1220_2147_Open_Image.style.display='inline'; Codehighlighter1_1220_2147_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(books</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">)</span><span id="Codehighlighter1_1220_2147_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1220_2147_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_1262_2081_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1262_2081_Open_Text.style.display='none'; Codehighlighter1_1262_2081_Closed_Image.style.display='inline'; Codehighlighter1_1262_2081_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1262_2081_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1262_2081_Closed_Text.style.display='none'; Codehighlighter1_1262_2081_Open_Image.style.display='inline'; Codehighlighter1_1262_2081_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">books.getLength();i</span><span style="color: #000000">++</span><span style="color: #000000">)</span><span id="Codehighlighter1_1262_2081_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1262_2081_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;book</span><span style="color: #000000">=</span><span style="color: #000000">books.item(i);<br />
<img id="Codehighlighter1_1340_2075_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1340_2075_Open_Text.style.display='none'; Codehighlighter1_1340_2075_Closed_Image.style.display='inline'; Codehighlighter1_1340_2075_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1340_2075_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1340_2075_Closed_Text.style.display='none'; Codehighlighter1_1340_2075_Open_Image.style.display='inline'; Codehighlighter1_1340_2075_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(book.getNodeType()</span><span style="color: #000000">==</span><span style="color: #000000">Node.ELEMENT_NODE)</span><span id="Codehighlighter1_1340_2075_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1340_2075_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">（7）取得节点的属性值</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;email</span><span style="color: #000000">=</span><span style="color: #000000">book.getAttributes().getNamedItem(</span><span style="color: #000000">"</span><span style="color: #000000">email</span><span style="color: #000000">"</span><span style="color: #000000">).getNodeValue();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(email);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">注意，节点的属性也是它的子节点。它的节点类型也是Node.ELEMENT_NODE<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">（8）轮循子节点</span><span style="color: #008000"><br />
<img id="Codehighlighter1_1619_2068_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1619_2068_Open_Text.style.display='none'; Codehighlighter1_1619_2068_Closed_Image.style.display='inline'; Codehighlighter1_1619_2068_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1619_2068_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1619_2068_Closed_Text.style.display='none'; Codehighlighter1_1619_2068_Open_Image.style.display='inline'; Codehighlighter1_1619_2068_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(Node&nbsp;node</span><span style="color: #000000">=</span><span style="color: #000000">book.getFirstChild();node</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">;node</span><span style="color: #000000">=</span><span style="color: #000000">node.getNextSibling())</span><span id="Codehighlighter1_1619_2068_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1619_2068_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_1669_2060_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1669_2060_Open_Text.style.display='none'; Codehighlighter1_1669_2060_Closed_Image.style.display='inline'; Codehighlighter1_1669_2060_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1669_2060_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1669_2060_Closed_Text.style.display='none'; Codehighlighter1_1669_2060_Open_Image.style.display='inline'; Codehighlighter1_1669_2060_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(node.getNodeType()</span><span style="color: #000000">==</span><span style="color: #000000">Node.ELEMENT_NODE)</span><span id="Codehighlighter1_1669_2060_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1669_2060_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_1716_1898_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1716_1898_Open_Text.style.display='none'; Codehighlighter1_1716_1898_Closed_Image.style.display='inline'; Codehighlighter1_1716_1898_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1716_1898_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1716_1898_Closed_Text.style.display='none'; Codehighlighter1_1716_1898_Open_Image.style.display='inline'; Codehighlighter1_1716_1898_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(node.getNodeName().equals(</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000">))</span><span id="Codehighlighter1_1716_1898_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1716_1898_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">node.getNodeValue();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name1</span><span style="color: #000000">=</span><span style="color: #000000">node.getFirstChild().getNodeValue();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name1);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_1946_2051_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1946_2051_Open_Text.style.display='none'; Codehighlighter1_1946_2051_Closed_Image.style.display='inline'; Codehighlighter1_1946_2051_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1946_2051_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1946_2051_Closed_Text.style.display='none'; Codehighlighter1_1946_2051_Open_Image.style.display='inline'; Codehighlighter1_1946_2051_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(node.getNodeName().equals(</span><span style="color: #000000">"</span><span style="color: #000000">price</span><span style="color: #000000">"</span><span style="color: #000000">))</span><span id="Codehighlighter1_1946_2051_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1946_2051_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;price</span><span style="color: #000000">=</span><span style="color: #000000">node.getFirstChild().getNodeValue();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(price);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #008000">//</span><span style="color: #008000">（6）这是用一个org.w3c.dom.NodeList接口来存放它所有子节点的，还有一种轮循子节点的方法，后面有介绍</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_2192_2220_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2192_2220_Open_Text.style.display='none'; Codehighlighter1_2192_2220_Closed_Image.style.display='inline'; Codehighlighter1_2192_2220_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2192_2220_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2192_2220_Closed_Text.style.display='none'; Codehighlighter1_2192_2220_Open_Image.style.display='inline'; Codehighlighter1_2192_2220_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(ParserConfigurationException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_2192_2220_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2192_2220_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img id="Codehighlighter1_2254_2282_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2254_2282_Open_Text.style.display='none'; Codehighlighter1_2254_2282_Closed_Image.style.display='inline'; Codehighlighter1_2254_2282_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2254_2282_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2254_2282_Closed_Text.style.display='none'; Codehighlighter1_2254_2282_Open_Image.style.display='inline'; Codehighlighter1_2254_2282_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(FileNotFoundException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_2254_2282_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2254_2282_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img id="Codehighlighter1_2307_2335_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2307_2335_Open_Text.style.display='none'; Codehighlighter1_2307_2335_Closed_Image.style.display='inline'; Codehighlighter1_2307_2335_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2307_2335_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2307_2335_Closed_Text.style.display='none'; Codehighlighter1_2307_2335_Open_Image.style.display='inline'; Codehighlighter1_2307_2335_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(SAXException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_2307_2335_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2307_2335_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img id="Codehighlighter1_2359_2387_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2359_2387_Open_Text.style.display='none'; Codehighlighter1_2359_2387_Closed_Image.style.display='inline'; Codehighlighter1_2359_2387_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2359_2387_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2359_2387_Closed_Text.style.display='none'; Codehighlighter1_2359_2387_Open_Image.style.display='inline'; Codehighlighter1_2359_2387_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IOException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_2359_2387_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2359_2387_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_2433_2454_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2433_2454_Open_Text.style.display='none'; Codehighlighter1_2433_2454_Closed_Image.style.display='inline'; Codehighlighter1_2433_2454_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2433_2454_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2433_2454_Closed_Text.style.display='none'; Codehighlighter1_2433_2454_Open_Image.style.display='inline'; Codehighlighter1_2433_2454_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span id="Codehighlighter1_2433_2454_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2433_2454_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DomParse();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<br />
<br />
<p>这段代码的打印输出为：</p>
<p>　　null</p>
<p>　　alterrjzjh</p>
<p>　　jjjjjj</p>
<p>　　从上面可以看出</p>
<p>　　String name=node.getNodeValue();</p>
<p>　　是一个空值。而</p>
<p>　　String name1=node.getFirstChild().getNodeValue();</p>
<p>　　才是真正的值，这是因为DOM把&lt;name&gt;rjzjh&lt;/name&gt;也当作是两层结构的节点，其父节点</p>
<img src ="http://www.blogjava.net/lcs/aggbug/162088.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lcs/" target="_blank">lk</a> 2007-11-21 14:47 <a href="http://www.blogjava.net/lcs/archive/2007/11/21/162088.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java中四种XML解析技术</title><link>http://www.blogjava.net/lcs/archive/2007/11/21/162077.html</link><dc:creator>lk</dc:creator><author>lk</author><pubDate>Wed, 21 Nov 2007 06:04:00 GMT</pubDate><guid>http://www.blogjava.net/lcs/archive/2007/11/21/162077.html</guid><wfw:comment>http://www.blogjava.net/lcs/comments/162077.html</wfw:comment><comments>http://www.blogjava.net/lcs/archive/2007/11/21/162077.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lcs/comments/commentRss/162077.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lcs/services/trackbacks/162077.html</trackback:ping><description><![CDATA[在平时工作中，难免会遇到把 XML 作为数据存储格式。面对目前种类繁多的解决方案，哪个最适合我们呢？在这篇文章中，我对这四种主流方案做一个不完全评测，仅仅针对遍历 XML 这块来测试，因为遍历 XML 是工作中使用最多的（至少我认为）。 <br />
<br />
　　预 备 <br />
<br />
　　<strong>测试环境： <br />
</strong><br />
　　AMD 毒龙1.4G OC 1.5G、256M DDR333、Windows2000 Server SP4、Sun JDK 1.4.1+Eclipse 2.1+Resin 2.1.8，在 Debug 模式下测试。 <br />
<br />
　　XML 文件格式如下： <br />
<br />
　　＜?xml version="1.0" encoding="GB2312"?＞ <br />
　　＜RESULT＞ <br />
　　＜VALUE＞ <br />
　　＜NO＞A1234＜/NO＞ <br />
　　＜ADDR＞四川省XX县XX镇XX路X段XX号＜/ADDR＞ <br />
　　＜/VALUE＞ <br />
　　＜VALUE＞ <br />
　　＜NO＞B1234＜/NO＞ <br />
　　＜ADDR＞四川省XX市XX乡XX村XX组＜/ADDR＞ <br />
　　＜/VALUE＞ <br />
　　＜/RESULT＞ <br />
<br />
　　<strong>测试方法： <br />
</strong><br />
　　采用 JSP 端调用Bean（至于为什么采用JSP来调用，请参考：http://blog.csdn.net/rosen/archive/2004/10/15/138324.aspx），让每一种方案分别解析10K、100K、1000K、10000K的 XML 文件，计算其消耗时间（单位:毫秒）。 <br />
<br />
　　JSP 文件： <br />
<br />
　　＜%@ page contentType="text/html; charset=gb2312" %＞ <br />
　　＜%@ page import="com.test.*"%＞ <br />
<br />
　　＜html＞ <br />
　　＜body＞ <br />
　　＜% <br />
　　String args[]={""}; <br />
　　MyXMLReader.main(args); <br />
　　%＞ <br />
　　＜/body＞ <br />
　　＜/html＞ <br />
<br />
<strong>　　测 试</strong> <br />
<br />
　　首先出场的是 DOM（JAXP Crimson 解析器） <br />
<br />
　　DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构，然后才能做任何工作。由于它是基于信息层次的，因而 DOM 被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。首先，由于树在内存中是持久的，因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航，而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。 <br />
<br />
　　另一方面，对于特别大的文档，解析和加载整个文档可能很慢且很耗资源，因此使用其他手段来处理这样的数据会更好。这些基于事件的模型，比如 SAX。 <br />
<br />
　　Bean文件： <br />
<br />
　　package com.test; <br />
<br />
　　import java.io.*; <br />
　　import java.util.*; <br />
　　import org.w3c.dom.*; <br />
　　import javax.xml.parsers.*; <br />
<br />
　　public class MyXMLReader{ <br />
<br />
　　public static void main(String arge[]){ <br />
　　long lasting =System.currentTimeMillis(); <br />
　　try{ <br />
　　　File f=new File("data_10k.xml"); <br />
　　　DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); <br />
　　　DocumentBuilder builder=factory.newDocumentBuilder(); <br />
　　　Document doc = builder.parse(f); <br />
　　　NodeList nl = doc.getElementsByTagName("VALUE"); <br />
　　　for (int i=0;i＜nl.getLength();i++){ <br />
　　　　System.out.print("车牌号码:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue()); <br />
　　　　System.out.println(" 车主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue()); <br />
　　} <br />
　　}catch(Exception e){ <br />
　　　e.printStackTrace(); <br />
　　} <br />
　　System.out.println("运行时间："+(System.currentTimeMillis() - lasting)+" 毫秒"); <br />
　　} <br />
　　} <br />
<br />
<br />
　　10k消耗时间：265 203 219 172 <br />
　　100k消耗时间：9172 9016 8891 9000 <br />
　　1000k消耗时间：691719 675407 708375 739656 <br />
　　10000k消耗时间：OutOfMemoryError <br />
<br />
　　接着是 SAX <br />
<br />
　　这种处理的优点非常类似于流媒体的优点。分析能够立即开始，而不是等待所有的数据被处理。而且，由于应用程序只是在读取数据时检查数据，因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上，应用程序甚至不必解析整个文档；它可以在某个条件得到满足时停止解析。一般来说，SAX 还比它的替代者 DOM 快许多。
<p>　　 选择 DOM 还是选择 SAX ？ <br />
<br />
　　对于需要自己编写代码来处理 XML 文档的开发人员来说，选择 DOM 还是 SAX 解析模型是一个非常重要的设计决策。 <br />
<br />
　　DOM 采用建立树形结构的方式访问 XML 文档，而 SAX 采用的事件模型。 <br />
<br />
　　DOM 解析器把 XML 文档转化为一个包含其内容的树，并可以对树进行遍历。用 DOM 解析模型的优点是编程容易，开发人员只需要调用建树的指令，然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用 DOM 解析器的时候需要处理整个 XML 文档，所以对性能和内存的要求比较高，尤其是遇到很大的 XML 文件的时候。由于它的遍历能力，DOM 解析器常用于 XML 文档需要频繁的改变的服务中。 <br />
<br />
　　SAX 解析器采用了基于事件的模型，它在解析 XML 文档的时候可以触发一系列的事件，当发现给定的tag的时候，它可以激活一个回调方法，告诉该方法制定的标签已经找到。SAX 对内存的要求通常会比较低，因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时，SAX 这种扩展能力得到了更好的体现。但用 SAX 解析器的时候编码工作会比较困难，而且很难同时访问同一个文档中的多处不同数据。 <br />
<br />
　　Bean文件： <br />
<br />
　　package com.test; <br />
　　import org.xml.sax.*; <br />
　　import org.xml.sax.helpers.*; <br />
　　import javax.xml.parsers.*; <br />
<br />
　　public class MyXMLReader extends DefaultHandler { <br />
<br />
　　java.util.Stack tags = new java.util.Stack(); <br />
<br />
　　public MyXMLReader() { <br />
　　super(); <br />
　　} <br />
<br />
　　public static void main(String args[]) { <br />
　　long lasting = System.currentTimeMillis(); <br />
　　try { <br />
　　　SAXParserFactory sf = SAXParserFactory.newInstance(); <br />
　　　SAXParser sp = sf.newSAXParser(); <br />
　　　MyXMLReader reader = new MyXMLReader(); <br />
　　　sp.parse(new InputSource("data_10k.xml"), reader); <br />
　　} catch (Exception e) { <br />
　　　e.printStackTrace(); <br />
　　} <br />
　　System.out.println("运行时间：" + (System.currentTimeMillis() - lasting) + " 毫秒"); <br />
　　} <br />
<br />
　　public void characters(char ch[], int start, int length) throws SAXException { <br />
　　String tag = (String) tags.peek(); <br />
　　if (tag.equals("NO")) { <br />
　　　System.out.print("车牌号码：" + new String(ch, start, length)); <br />
　　} <br />
　　if (tag.equals("ADDR")) { <br />
　　System.out.println(" 地址:" + new String(ch, start, length)); <br />
　　} <br />
　　} <br />
<br />
　　public void startElement( <br />
　　String uri, <br />
　　String localName, <br />
　　String qName, <br />
　　Attributes attrs) { <br />
　　tags.push(qName); <br />
　　} <br />
　　} <br />
<br />
　　10k消耗时间：110 47 109 78 <br />
　　100k消耗时间：344 406 375 422 <br />
　　1000k消耗时间：3234 3281 3688 3312 <br />
　　10000k消耗时间：32578 34313 31797 31890 30328 <br />
<br />
　　然后是 JDOM http://www.jdom.org/ <br />
<br />
　　JDOM 的目的是成为 Java 特定文档模型，它简化与 XML 的交互并且比使用 DOM 实现更快。由于是第一个 Java 特定模型，JDOM 一直得到大力推广和促进。正在考虑通过&#8220;Java 规范请求 JSR-102&#8221;将它最终用作&#8220;Java 标准扩展&#8221;。从 2000 年初就已经开始了 JDOM 开发。 <br />
<br />
　　JDOM 与 DOM 主要有两方面不同。首先，JDOM 仅使用具体类而不使用接口。这在某些方面简化了 API，但是也限制了灵活性。第二，API 大量使用了 Collections 类，简化了那些已经熟悉这些类的 Java 开发者的使用。 <br />
<br />
　　JDOM 文档声明其目的是&#8220;使用 20%（或更少）的精力解决 80%（或更多）Java/XML 问题&#8221;（根据学习曲线假定为 20%）。JDOM 对于大多数 Java/XML 应用程序来说当然是有用的，并且大多数开发者发现 API 比 DOM 容易理解得多。JDOM 还包括对程序行为的相当广泛检查以防止用户做任何在 XML 中无意义的事。然而，它仍需要您充分理解 XML 以便做一些超出基本的工作（或者甚至理解某些情况下的错误）。这也许是比学习 DOM 或 JDOM 接口都更有意义的工作。 <br />
<br />
　　JDOM 自身不包含解析器。它通常使用 SAX2 解析器来解析和验证输入 XML 文档（尽管它还可以将以前构造的 DOM 表示作为输入）。它包含一些转换器以将 JDOM 表示输出成 SAX2 事件流、DOM 模型或 XML 文本文档。JDOM 是在 Apache 许可证变体下发布的开放源码。 <br />
<br />
　　Bean文件： <br />
<br />
　　package com.test; <br />
<br />
　　import java.io.*; <br />
　　import java.util.*; <br />
　　import org.jdom.*; <br />
　　import org.jdom.input.*; <br />
<br />
　　public class MyXMLReader { <br />
<br />
　　public static void main(String arge[]) { <br />
　　long lasting = System.currentTimeMillis(); <br />
　　try { <br />
　　　SAXBuilder builder = new SAXBuilder(); <br />
　　　Document doc = builder.build(new File("data_10k.xml")); <br />
　　　Element foo = doc.getRootElement(); <br />
　　　List allChildren = foo.getChildren(); <br />
　　　for(int i=0;i＜allChildren.size();i++) { <br />
　　　　System.out.print("车牌号码:" + ((Element)allChildren.get(i)).getChild("NO").getText()); <br />
　　　　System.out.println(" 车主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText()); <br />
　　　} <br />
　　} catch (Exception e) { <br />
　　　e.printStackTrace(); <br />
　　} <br />
　　System.out.println("运行时间：" + (System.currentTimeMillis() - lasting) + " 毫秒"); <br />
　　} <br />
　　} <br />
<br />
　　10k消耗时间：125 62 187 94 <br />
　　100k消耗时间：704 625 640 766 <br />
　　1000k消耗时间：27984 30750 27859 30656 <br />
　　10000k消耗时间：OutOfMemoryError <br />
<br />
　　最后是 DOM4J http://dom4j.sourceforge.net/ <br />
<br />
　　虽然 DOM4J 代表了完全独立的开发结果，但最初，它是 JDOM 的一种智能分支。它合并了许多超出基本 XML 文档表示的功能，包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项，它通过 DOM4J API 和标准 DOM 接口具有并行访问功能。从 2000 下半年开始，它就一直处于开发之中。 <br />
<br />
　　为支持所有这些功能，DOM4J 使用接口和抽象基本类方法。DOM4J 大量使用了 API 中的 Collections 类，但是在许多情况下，它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是，虽然 DOM4J 付出了更复杂的 API 的代价，但是它提供了比 JDOM 大得多的灵活性。 <br />
<br />
　　在添加灵活性、XPath 集成和对大文档处理的目标时，DOM4J 的目标与 JDOM 是一样的：针对 Java 开发者的易用性和直观操作。它还致力于成为比 JDOM 更完整的解决方案，实现在本质上处理所有 Java/XML 问题的目标。在完成该目标时，它比 JDOM 更少强调防止不正确的应用程序行为。 <br />
<br />
　　DOM4J 是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML，特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。 <br />
<br />
　　Bean文件： <br />
<br />
　　package com.test; <br />
<br />
　　import java.io.*; <br />
　　import java.util.*; <br />
　　import org.dom4j.*; <br />
　　import org.dom4j.io.*; <br />
<br />
　　public class MyXMLReader { <br />
<br />
　　public static void main(String arge[]) { <br />
　　long lasting = System.currentTimeMillis(); <br />
　　try { <br />
　　　File f = new File("data_10k.xml"); <br />
　　　SAXReader reader = new SAXReader(); <br />
　　　Document doc = reader.read(f); <br />
　　　Element root = doc.getRootElement(); <br />
　　　Element foo; <br />
　　　for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) { <br />
　　　　foo = (Element) i.next(); <br />
　　　　System.out.print("车牌号码:" + foo.elementText("NO")); <br />
　　　　System.out.println(" 车主地址:" + foo.elementText("ADDR")); <br />
　　　} <br />
　　} catch (Exception e) { <br />
　　　e.printStackTrace(); <br />
　　} <br />
　　System.out.println("运行时间：" + (System.currentTimeMillis() - lasting) + " 毫秒"); <br />
　　} <br />
　　} <br />
<br />
　　10k消耗时间：109 78 109 31 <br />
　　100k消耗时间：297 359 172 312 <br />
　　1000k消耗时间：2281 2359 2344 2469 <br />
　　10000k消耗时间：20938 19922 20031 21078 <br />
<br />
　　JDOM 和 DOM 在性能测试时表现不佳，在测试 10M 文档时内存溢出。在小文档情况下还值得考虑使用 DOM 和 JDOM。虽然 JDOM 的开发者已经说明他们期望在正式发行版前专注性能问题，但是从性能观点来看，它确实没有值得推荐之处。另外，DOM 仍是一个非常好的选择。DOM 实现广泛应用于多种编程语言。它还是许多其它与 XML 相关的标准的基础，因为它正式获得 W3C 推荐（与基于非标准的 Java 模型相对），所以在某些类型的项目中可能也需要它（如在 JavaScript 中使用 DOM）。 <br />
<br />
　　SAX表现较好，这要依赖于它特定的解析方式。一个 SAX 检测即将到来的XML流，但并没有载入到内存（当然当XML流被读入时，会有部分文档暂时隐藏在内存中）。 <br />
<br />
　　无疑，DOM4J是这场测试的获胜者，目前许多开源项目中大量采用 DOM4J，例如大名鼎鼎的 Hibernate 也用 DOM4J 来读取 XML 配置文件。如果不考虑可移植性，那就采用DOM4J吧！</p>
<img src ="http://www.blogjava.net/lcs/aggbug/162077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lcs/" target="_blank">lk</a> 2007-11-21 14:04 <a href="http://www.blogjava.net/lcs/archive/2007/11/21/162077.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java解析XML</title><link>http://www.blogjava.net/lcs/archive/2007/11/21/162076.html</link><dc:creator>lk</dc:creator><author>lk</author><pubDate>Wed, 21 Nov 2007 06:02:00 GMT</pubDate><guid>http://www.blogjava.net/lcs/archive/2007/11/21/162076.html</guid><wfw:comment>http://www.blogjava.net/lcs/comments/162076.html</wfw:comment><comments>http://www.blogjava.net/lcs/archive/2007/11/21/162076.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lcs/comments/commentRss/162076.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lcs/services/trackbacks/162076.html</trackback:ping><description><![CDATA[由于需要对XML文件进行操作。所以上网找了一此资料。<br />
用了一下org.w3c.dom解析，不太方便，特别是进行修改时。<br />
后来找到了dom4j这个工具包。方便多了。呵。。记录一下，以后用得着。<br />
<br />
<br />
首先通过org.w3c.dom解析<br />
InitFromXML.java<br />
<br />
package system.init;<br />
<br />
import java.io.File;<br />
import java.io.IOException;<br />
import java.util.HashMap;<br />
import java.util.Iterator;<br />
import java.util.Set;<br />
<br />
import javax.xml.parsers.DocumentBuilder;<br />
import javax.xml.parsers.DocumentBuilderFactory;<br />
import javax.xml.parsers.ParserConfigurationException;<br />
import javax.xml.transform.Transformer;<br />
import javax.xml.transform.TransformerConfigurationException;<br />
import javax.xml.transform.TransformerException;<br />
import javax.xml.transform.TransformerFactory;<br />
import javax.xml.transform.dom.DOMSource;<br />
import javax.xml.transform.stream.StreamResult;<br />
<br />
import org.w3c.dom.Document;<br />
import org.w3c.dom.Element;<br />
import org.w3c.dom.Node;<br />
import org.w3c.dom.NodeList;<br />
import org.xml.sax.SAXException;<br />
<br />
<br />
/**<br />
* @author yymoth<br />
*<br />
*/<br />
public class InitFromXML {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;private HashMap prop = new HashMap(); //存储从文件中读取的所有配置信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;private HashMap temp = new HashMap(); //传入的参数，用来生成新的XML配置文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;private static String xmlFileName ="SystemInit.xml";<br />
&nbsp;&nbsp;&nbsp;&nbsp;private static String xmlFilePath = InitFromXML.class.getClassLoader().getResource(xmlFileName).getPath();<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;private static InitFromXML instance = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public static synchronized InitFromXML getInstance()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(instance == null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;instance = new InitFromXML();&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return instance;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * <br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp;&nbsp;public InitFromXML() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @param args<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated method stub<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new InitFromXML().getSystemProperty();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HashMap temp = new HashMap();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.put("outputImageDevice","outputImageDeviceVVVVV");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.put("inputSceneFilePath","inputSceneFilePathVVVVV");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.put("fetchIRADFactor",0.11);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.put("fcpr_upLimit",111);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new InitFromXML().updateSystemProperty(temp);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * 把xml文件读取内容，在内存中产生dom树; 修改它的内容不会影响文件;<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @return<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp;&nbsp;public HashMap getSystemProperty()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilder db;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db = dbf.newDocumentBuilder();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("开始读取配置文件= " + xmlFilePath);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document d = db.parse(xmlFilePath);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NodeList nl = d.getElementsByTagName("outputImageDevice");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node mynode = nl.item(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String outputImageDevice = mynode.getFirstChild().getNodeValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prop.put("outputImageDevice",outputImageDevice);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("输出路径= "+prop.get("outputImageDevice").toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nl = d.getElementsByTagName("inputSceneFilePath");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynode = nl.item(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String inputSceneFilePath = mynode.getFirstChild().getNodeValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prop.put("inputSceneFilePath",inputSceneFilePath);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("输入场景路径= "+prop.get("inputSceneFilePath"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nl = d.getElementsByTagName("fetchIRADFactor");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynode = nl.item(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String fetchIRADFactor= mynode.getFirstChild().getNodeValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prop.put("fetchIRADFactor",fetchIRADFactor);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("空闲Render选择因子= "+prop.get("fetchIRADFactor"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nl = d.getElementsByTagName("fcpr_upLimit");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynode = nl.item(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int fcpr_upLimit = Integer.parseInt(mynode.getFirstChild().getNodeValue().toString().trim());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prop.put("fcpr_upLimit",fcpr_upLimit);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("单台Render最大渲染帧数= "+prop.get("fcpr_upLimit"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (ParserConfigurationException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (SAXException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (IOException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.prop;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * 更新系统参数<br />
&nbsp;&nbsp;&nbsp;&nbsp; *<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void updateSystemProperty(HashMap temp)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilder db = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db = dbf.newDocumentBuilder();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document doc = db.parse(xmlFilePath);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NodeList nl = doc.getElementsByTagName("outputImageDevice");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node mynode = nl.item(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynode.setTextContent((String)temp.get("outputImageDevice"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//mynode.setNodeValue((String)temp.get("outputImageDevice"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nl = doc.getElementsByTagName("inputSceneFilePath");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynode = nl.item(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynode.setTextContent((String)temp.get("inputSceneFilePath"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nl = doc.getElementsByTagName("fetchIRADFactor");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynode = nl.item(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynode.setTextContent((String)temp.get("fetchIRADFactor"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nl = doc.getElementsByTagName("fcpr_upLimit");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynode = nl.item(0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mynode.setTextContent((String)temp.get("fcpr_upLimit"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writeToXML(doc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (ParserConfigurationException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (SAXException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (IOException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * 把Document对象生成文件;<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @param doc<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void writeToXML(Document doc)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TransformerFactory tfactory = TransformerFactory.newInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transformer tf = tfactory.newTransformer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOMSource source = new DOMSource(doc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StreamResult result = new StreamResult(new File(xmlFilePath));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tf.transform(source,result);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (TransformerConfigurationException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (TransformerException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
<br />
<br />
<br />
下面这个是通过DOM4J， 使用之前要下载dom4j包。官方站点：www.dom4j.org<br />
<br />
Dom4j.java<br />
<br />
<br />
package wcrs_master.test;<br />
<br />
/**<br />
* @author yymoth<br />
*<br />
*/<br />
import java.io.IOException;<br />
import java.io.File;<br />
import java.io.UnsupportedEncodingException;<br />
import java.util.HashMap;<br />
import java.util.Iterator;<br />
import java.util.List;<br />
import org.dom4j.io.OutputFormat;<br />
import org.dom4j.io.XMLWriter;<br />
import org.dom4j.io.SAXReader;<br />
import org.dom4j.Document;<br />
import org.dom4j.DocumentException;<br />
import org.dom4j.Node;<br />
import org.dom4j.Element;<br />
import org.dom4j.io.OutputFormat;<br />
import org.dom4j.Attribute;<br />
<br />
import system.init.InitFromXML;<br />
<br />
import java.io.FileWriter;<br />
<br />
public class Dom4j {<br />
&nbsp;&nbsp;&nbsp;&nbsp;private static String xmlFileName ="SystemInit.xml";<br />
&nbsp;&nbsp;&nbsp;&nbsp;private static String xmlFilePath = Dom4j.class.getClassLoader().getResource(xmlFileName).getPath();<br />
&nbsp;&nbsp;&nbsp;&nbsp;private static Dom4j instance = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public Dom4j() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public static synchronized Dom4j getInstance()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(instance == null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;instance = new Dom4j();&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return instance;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public Document parse(String sfile) throws DocumentException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SAXReader reader = new SAXReader();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document document = reader.read(new File(sfile));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return document;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void update(HashMap temp) throws IOException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document document = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document = new Dom4j().parse(xmlFilePath);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element root = document.getRootElement(); //得到根节点目录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator iter = root.elementIterator();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("\r\n****** 获取的数据如下 ******");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(xmlFilePath);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (iter.hasNext()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element titleElement = (Element) iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 修改xml元素<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(titleElement.getName()+"&nbsp;&nbsp;==&nbsp;&nbsp;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(titleElement.getData().toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (titleElement.getName().equals("outputImageDevice")) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleElement.setText(temp.get("outputImageDevice").toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (titleElement.getName().equals("fetchIRADFactor")) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleElement.setText(temp.get("fetchIRADFactor").toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (titleElement.getName().equals("inputSceneFilePath")) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleElement.setText(temp.get("inputSceneFilePath").toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (titleElement.getName().equals("fcpr_upLimit")) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleElement.setText(temp.get("fcpr_upLimit").toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (DocumentException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writeToXML(document);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * 把xml文件读取内容，在内存中产生dom树; 修改它的内容不会影响文件;<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @return<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp;&nbsp;public HashMap getSystemProperty()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HashMap temp = new HashMap();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document document ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document = new Dom4j().parse(xmlFilePath);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element root = document.getRootElement(); //得到根节点目录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator iter = root.elementIterator();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(iter.hasNext())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element titleElement = (Element) iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.put(titleElement.getName(),titleElement.getData());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (DocumentException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return temp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;&nbsp; * 写入文件<br />
&nbsp;&nbsp;&nbsp;&nbsp; * @param document<br />
&nbsp;&nbsp;&nbsp;&nbsp; */<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void writeToXML(Document document)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 输出全部原始数据，在编译器中显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputFormat format = OutputFormat.createPrettyPrint();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLWriter writer;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer = new XMLWriter(System.out, format);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//System.out.println("\r\n------------------Start------------------");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.write(document);&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//System.out.println("\r\n-------------------End-------------------");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 输出全部原始数据，并用它生成新的我们需要的XML文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLWriter writer2 = new XMLWriter(new FileWriter(new File(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlFilePath)), format);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer2.write(document); //输出到文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer2.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (UnsupportedEncodingException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (IOException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HashMap temp = new HashMap();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.put("outputImageDevice","outputImageDeviceVVVVV");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.put("inputSceneFilePath","inputSceneFilePathVVVVV");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.put("fetchIRADFactor",0.11);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.put("fcpr_upLimit",11);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dom4j dom4j = new Dom4j();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dom4j.update(temp);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(e.getMessage());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
<img src ="http://www.blogjava.net/lcs/aggbug/162076.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lcs/" target="_blank">lk</a> 2007-11-21 14:02 <a href="http://www.blogjava.net/lcs/archive/2007/11/21/162076.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jdom使用指南</title><link>http://www.blogjava.net/lcs/archive/2007/11/20/161897.html</link><dc:creator>lk</dc:creator><author>lk</author><pubDate>Tue, 20 Nov 2007 09:04:00 GMT</pubDate><guid>http://www.blogjava.net/lcs/archive/2007/11/20/161897.html</guid><wfw:comment>http://www.blogjava.net/lcs/comments/161897.html</wfw:comment><comments>http://www.blogjava.net/lcs/archive/2007/11/20/161897.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lcs/comments/commentRss/161897.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lcs/services/trackbacks/161897.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span id="ArticleContent1_ArticleContent1_lblContent"><span style="font-family: 宋体">对<span xml:lang="EN-US">xml</span>文档的解析<span xml:lang="EN-US">java</span>中有很多种方法，例如使用<span xml:lang="EN-US">dom</span>、<span xml:lang="EN-US">sax</span>、<span xml:lang="EN-US">jdom</span>等等，相比之下，我觉得还是<span xml:lang="EN-US">jdom</span>比较方便。下面介绍一下<span xml:lang="EN-US">jdom</span>的基本使用方法，不对之处还请各位网友之交。谢谢！</span></span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体">最新的<span xml:lang="EN-US">jdom</span>可以到他的网站：<span xml:lang="EN-US"><a href="http://www.jdom.org/">http://www.jdom.org</a></span>去下载，现在的版本是<span xml:lang="EN-US">1.0</span>版，下载之后将得到<span xml:lang="EN-US">jdom-1.0.zip</span>文件，解压后进入<span xml:lang="EN-US">build</span>文件夹将看到一个名为<span xml:lang="EN-US">jdom.jar</span>的包，这个就是<span xml:lang="EN-US">jdom</span>的类包了，将它加到你的<span xml:lang="EN-US">classpath</span>里就可以使用<span xml:lang="EN-US">jdom</span>提供的各种处理<span xml:lang="EN-US">xml</span>的类和他们的方法了。应该注意的是在解压后的文件夹里还有一个<span xml:lang="EN-US">lib</span>文件夹，里面保存的是使用<span xml:lang="EN-US">jdom</span>的环境包，不过我在我的<span xml:lang="EN-US">jdk1.4</span>下使用没引用这些包一样好用，不知道是<span xml:lang="EN-US">jdk1.4</span>中已经包含了这些东西还是原来我的<span xml:lang="EN-US">eclipse</span>已经引用了这些包，呵呵。</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体">好了，书归正传，现在开始介绍<span xml:lang="EN-US">jdom</span>包的使用。<br />
</span></p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US"><br />
&nbsp;&nbsp; jdom</span><span style="font-family: 宋体">包的结构包括：</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">org.jdom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="font-family: 宋体">包含了所有的<span xml:lang="EN-US">xml</span>文档要素的<span xml:lang="EN-US">java</span>类</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">org.jdom.adapters&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="font-family: 宋体">包含了与<span xml:lang="EN-US">dom</span>适配的<span xml:lang="EN-US">java</span>类</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">org.jdom.filter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="font-family: 宋体">包含了<span xml:lang="EN-US">xml</span>文档的过滤器类</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">org.jdom.input&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="font-family: 宋体">包含了读取<span xml:lang="EN-US">xml</span>文档的类</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">org.jdom.output&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="font-family: 宋体">包含了写入<span xml:lang="EN-US">xml</span>文档的雷</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">org.jdom.transform&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="font-family: 宋体">包含了将<span xml:lang="EN-US">jdom xml</span>文档接口转换为其他<span xml:lang="EN-US">xml</span>文档接口</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">org.jdom.xpath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span><span style="font-family: 宋体">包含了对<span xml:lang="EN-US">xml</span>文档<span xml:lang="EN-US">xpath</span>操作的类</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体">下面将通过一个例子介绍<span xml:lang="EN-US">jdom</span>的常用操作</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体">生成<span xml:lang="EN-US">xml</span>文档：</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体">下面的类将生成一个<span xml:lang="EN-US">xml</span>文档：</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体" xml:lang="EN-US">/*</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体" xml:lang="EN-US">&nbsp;* Created on 2004-10-9</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体" xml:lang="EN-US">&nbsp;*</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体" xml:lang="EN-US">&nbsp;*</span> <span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体">写入<span xml:lang="EN-US">xml</span>文件的例子</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体" xml:lang="EN-US">&nbsp;*/</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f5fbf; font-family: 宋体" xml:lang="EN-US">/**</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;<span style="color: #3f5fbf">*</span> <strong><span style="color: #7f9fbf">@author</span></strong> <span style="color: #3f5fbf">lnman</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;<span style="color: #3f5fbf">*</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;<span style="color: #3f5fbf">*</span> <span style="color: #3f5fbf">To</span> <span style="color: #3f5fbf">change</span> <span style="color: #3f5fbf">the</span> <span style="color: #3f5fbf">template</span> <span style="color: #3f5fbf">for</span> <span style="color: #3f5fbf">this</span> <span style="color: #3f5fbf">generated</span> <span style="color: #3f5fbf">type</span> <span style="color: #3f5fbf">comment</span> <span style="color: #3f5fbf">go</span> <span style="color: #3f5fbf">to</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;<span style="color: #3f5fbf">*</span> <span style="color: #3f5fbf">Window&amp;gt;Preferences&amp;gt;Java&amp;gt;Code</span> <span style="color: #3f5fbf">Generation&amp;gt;Code</span> <span style="color: #3f5fbf">and</span> <span style="color: #3f5fbf">Comments</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;<span style="color: #3f5fbf">*/</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 10pt; background: white; color: #7f0055; font-family: 宋体" xml:lang="EN-US">import</span></strong> <span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US"><span style="color: black">java.io.*;</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 10pt; background: white; color: #7f0055; font-family: 宋体" xml:lang="EN-US">import</span></strong> <span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US"><span style="color: black">org.jdom.*;</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 10pt; background: white; color: #7f0055; font-family: 宋体" xml:lang="EN-US">import</span></strong> <span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US"><span style="color: black">org.jdom.output.*;</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 10pt; background: white; color: #7f0055; font-family: 宋体" xml:lang="EN-US">public</span></strong> <span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US"><strong><span style="color: #7f0055">class</span></strong> <span style="color: black">WriteXML</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: black; font-family: 宋体" xml:lang="EN-US">{</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp; <strong><span style="color: #7f0055">public</span></strong> <strong><span style="color: #7f0055">void</span></strong> <span style="color: black">BuildXML()</span> <strong><span style="color: #7f0055">throws</span></strong> <span style="color: black">Exception</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp; <span style="color: black">{</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">Element</span> <span style="color: black">root,student,number,name,age;</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">root</span> <span style="color: black">=</span> <strong><span style="color: #7f0055">new</span></strong> <span style="color: black">Element(</span><span style="color: #2a00ff">"student-info"</span><span style="color: black">);</span> <span style="color: #3f7f5f">//</span></span><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体">生成根元素：<span xml:lang="EN-US">student-info&nbsp;&nbsp;</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">student</span> <span style="color: black">=</span> <strong><span style="color: #7f0055">new</span></strong> <span style="color: black">Element(</span><span style="color: #2a00ff">"student"</span><span style="color: black">);</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #3f7f5f">//</span></span><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体">生成元素：<span xml:lang="EN-US">student,</span>该元素中将包含元素<span xml:lang="EN-US">number,name,age</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">number</span> <span style="color: black">=</span> <strong><span style="color: #7f0055">new</span></strong> <span style="color: black">Element(</span><span style="color: #2a00ff">"number"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">name</span> <span style="color: black">=</span> <strong><span style="color: #7f0055">new</span></strong> <span style="color: black">Element(</span><span style="color: #2a00ff">"name"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">age</span> <span style="color: black">=</span> <strong><span style="color: #7f0055">new</span></strong> <span style="color: black">Element(</span><span style="color: #2a00ff">"age"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">Document</span> <span style="color: black">doc</span> <span style="color: black">=</span> <strong><span style="color: #7f0055">new</span></strong> <span style="color: black">Document(root);</span>&nbsp;&nbsp;&nbsp; <span style="color: #3f7f5f">//</span></span><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体">将根元素植入文档<span xml:lang="EN-US">doc</span>中</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">number.setText(</span><span style="color: #2a00ff">"001"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">name.setText(</span><span style="color: #2a00ff">"lnman"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">age.setText(</span><span style="color: #2a00ff">"24"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">student.addContent(number);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">student.addContent(name);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">student.addContent(age);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">root.addContent(student);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">Format</span> <span style="color: black">format</span> <span style="color: black">=</span> <span style="color: black">Format.getCompactFormat();</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">format.setEncoding(</span><span style="color: #2a00ff">"gb2312"</span><span style="color: black">);</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #3f7f5f">//</span></span><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体">设置<span xml:lang="EN-US">xml</span>文件的字符为<span xml:lang="EN-US">gb2312</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">format.setIndent(</span><span style="color: #2a00ff">"&nbsp;&nbsp;&nbsp; "</span><span style="color: black">);</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #3f7f5f">//</span></span><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体">设置<span xml:lang="EN-US">xml</span>文件的缩进为<span xml:lang="EN-US">4</span>个空格</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">XMLOutputter</span> <span style="color: black">XMLOut</span> <span style="color: black">=</span> <strong><span style="color: #7f0055">new</span></strong> <span style="color: black">XMLOutputter(format);</span><span style="color: #3f7f5f">//</span></span><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体">在元素后换行，每一层元素缩排四格</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">XMLOut.output(doc,</span> <strong><span style="color: #7f0055">new</span></strong> <span style="color: black">FileOutputStream(</span><span style="color: #2a00ff">"studentinfo.xml"</span><span style="color: black">));</span>&nbsp;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp; <span style="color: black">}</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp; <strong><span style="color: #7f0055">public</span></strong> <strong><span style="color: #7f0055">static</span></strong> <strong><span style="color: #7f0055">void</span></strong> <span style="color: black">main(String[]</span> <span style="color: black">args)</span> <strong><span style="color: #7f0055">throws</span></strong> <span style="color: black">Exception</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp; <span style="color: black">{</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">WriteXML</span> <span style="color: black">w</span> <span style="color: black">=</span> <strong><span style="color: #7f0055">new</span></strong> <span style="color: black">WriteXML();</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">System.out.println(</span><span style="color: #2a00ff">"Now we build an XML document ....."</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">w.BuildXML();</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">System.out.println(</span><span style="color: #2a00ff">"finished!"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp; <span style="color: black">}</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: black; font-family: 宋体" xml:lang="EN-US">}</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体">生成的<span xml:lang="EN-US">xml</span>文档为：</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">&lt;?xml version="1.0" encoding="gb2312"?&gt;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">&lt;student-info&gt;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp; &lt;student&gt;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;number&gt;001&lt;/number&gt;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;lnman&lt;/name&gt;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;age&gt;24&lt;/age&gt;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp; &lt;/student&gt;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style="font-family: 宋体" xml:lang="EN-US">&lt;/student-info&gt;</span> </p>
<p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体">读取<span xml:lang="EN-US">xml</span>文档的例子：</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体" xml:lang="EN-US">/*</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体" xml:lang="EN-US">&nbsp;* Created on 2004-10-9</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体" xml:lang="EN-US">&nbsp;*</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体" xml:lang="EN-US">&nbsp;*</span><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体">用<span xml:lang="EN-US">jdom</span>读取<span xml:lang="EN-US">xml</span>文档的例子</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体" xml:lang="EN-US">&nbsp;*</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f7f5f; font-family: 宋体" xml:lang="EN-US">&nbsp;*/</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: #3f5fbf; font-family: 宋体" xml:lang="EN-US">/**</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;<span style="color: #3f5fbf">*</span> <strong><span style="color: #7f9fbf">@author</span></strong> <span style="color: #3f5fbf">lnman</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;<span style="color: #3f5fbf">*</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;<span style="color: #3f5fbf">*</span> <span style="color: #3f5fbf">To</span> <span style="color: #3f5fbf">change</span> <span style="color: #3f5fbf">the</span> <span style="color: #3f5fbf">template</span> <span style="color: #3f5fbf">for</span> <span style="color: #3f5fbf">this</span> <span style="color: #3f5fbf">generated</span> <span style="color: #3f5fbf">type</span> <span style="color: #3f5fbf">comment</span> <span style="color: #3f5fbf">go</span> <span style="color: #3f5fbf">to</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;<span style="color: #3f5fbf">*</span> <span style="color: #3f5fbf">Window&amp;gt;Preferences&amp;gt;Java&amp;gt;Code</span> <span style="color: #3f5fbf">Generation&amp;gt;Code</span> <span style="color: #3f5fbf">and</span> <span style="color: #3f5fbf">Comments</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;<span style="color: #3f5fbf">*/</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 10pt; background: white; color: #7f0055; font-family: 宋体" xml:lang="EN-US">import</span></strong> <span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US"><span style="color: black">org.jdom.output.*;</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 10pt; background: white; color: #7f0055; font-family: 宋体" xml:lang="EN-US">import</span></strong> <span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US"><span style="color: black">org.jdom.input.*;</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 10pt; background: white; color: #7f0055; font-family: 宋体" xml:lang="EN-US">import</span></strong> <span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US"><span style="color: black">org.jdom.*;</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 10pt; background: white; color: #7f0055; font-family: 宋体" xml:lang="EN-US">import</span></strong> <span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US"><span style="color: black">java.io.*;</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 10pt; background: white; color: #7f0055; font-family: 宋体" xml:lang="EN-US">import</span></strong> <span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US"><span style="color: black">java.util.*;</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 10pt; background: white; color: #7f0055; font-family: 宋体" xml:lang="EN-US">public</span></strong> <span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US"><strong><span style="color: #7f0055">class</span></strong> <span style="color: black">ReadXML</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: black; font-family: 宋体" xml:lang="EN-US">{</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp; <strong><span style="color: #7f0055">public</span></strong> <strong><span style="color: #7f0055">static</span></strong> <strong><span style="color: #7f0055">void</span></strong> <span style="color: black">main(String[]</span> <span style="color: black">args)</span> <strong><span style="color: #7f0055">throws</span></strong> <span style="color: black">Exception</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp; <span style="color: black">{</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">SAXBuilder</span> <span style="color: black">builder</span> <span style="color: black">=</span> <strong><span style="color: #7f0055">new</span></strong> <span style="color: black">SAXBuilder();</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">Document</span> <span style="color: black">read_doc</span> <span style="color: black">=</span> <span style="color: black">builder.build(</span><span style="color: #2a00ff">"studentinfo.xml"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">Element</span> <span style="color: black">stu</span> <span style="color: black">=</span> <span style="color: black">read_doc.getRootElement();</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">List</span> <span style="color: black">list</span> <span style="color: black">=</span> <span style="color: black">stu.getChildren(</span><span style="color: #2a00ff">"student"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><span style="color: #7f0055">for</span></strong><span style="color: black">(</span><strong><span style="color: #7f0055">int</span></strong> <span style="color: black">i</span> <span style="color: black">=</span> <span style="color: black">0;i</span> <span style="color: black">&lt;</span> <span style="color: black">list.size();i++)</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">{</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">Element</span> <span style="color: black">e</span> <span style="color: black">=</span> <span style="color: black">(Element)list.get(i);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">String</span> <span style="color: black">str_number</span> <span style="color: black">=</span> <span style="color: black">e.getChildText(</span><span style="color: #2a00ff">"number"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">String</span> <span style="color: black">str_name</span> <span style="color: black">=</span> <span style="color: black">e.getChildText(</span><span style="color: #2a00ff">"name"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">String</span> <span style="color: black">str_age</span> <span style="color: black">=</span> <span style="color: black">e.getChildText(</span><span style="color: #2a00ff">"age"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">System.out.println(</span><span style="color: #2a00ff">"---------STUDENT--------------"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">System.out.println(</span><span style="color: #2a00ff">"NUMBER:"</span> <span style="color: black">+</span> <span style="color: black">str_number);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">System.out.println(</span><span style="color: #2a00ff">"NAME:"</span> <span style="color: black">+</span> <span style="color: black">str_name);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">System.out.println(</span><span style="color: #2a00ff">"AGE:"</span> <span style="color: black">+</span> <span style="color: black">str_age);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">System.out.println(</span><span style="color: #2a00ff">"------------------------------"</span><span style="color: black">);</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">System.out.println();</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: black">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; font-family: 宋体" xml:lang="EN-US">&nbsp;&nbsp;&nbsp; <span style="color: black">}</span></span> </p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; background: white; color: black; font-family: 宋体" xml:lang="EN-US">}</span> </p>
<p style="margin: 0cm 0cm 0pt"><span style="color: black; font-family: 宋体" xml:lang="EN-US">Xpath</span><span style="color: black; font-family: 宋体">例子：</span> </p>
<p style="margin: 0cm 0cm 0pt"><span style="color: black; font-family: 宋体" xml:lang="EN-US">JDOM</span><span style="color: black; font-family: 宋体">的关于<span xml:lang="EN-US">XPATH</span>的<span xml:lang="EN-US">api</span>在<span xml:lang="EN-US">org.jdom.xpath</span>这个包里。这个包下，有一个抽象类<span xml:lang="EN-US">XPath.java</span>和实现类<span xml:lang="EN-US">JaxenXPath.java</span>，&nbsp;使用时先用<span xml:lang="EN-US">XPath</span>类的静态方法<span xml:lang="EN-US">newInstance(String&nbsp;xpath)</span>得到<span xml:lang="EN-US">XPath</span>对象，然后调用它的<span xml:lang="EN-US">selectNodes(Object&nbsp;context)</span>方法或<span xml:lang="EN-US">selectSingleNode(Object&nbsp;context)</span>方法，前者根据<span xml:lang="EN-US">xpath</span>语句返回一组节点<span xml:lang="EN-US">(List</span>对象<span xml:lang="EN-US">)</span>；后者根据一个<span xml:lang="EN-US">xpath</span>语句返回符合条件的第一个节点<span xml:lang="EN-US">(Object</span>类型<span xml:lang="EN-US">)</span>。请看<span xml:lang="EN-US">jdom-1.0</span>自带的范例程序： <span xml:lang="EN-US"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>它分析在<span xml:lang="EN-US">web.xml</span>文件中的注册的<span xml:lang="EN-US">servlet</span>的个数及参数个数，并输出角色名。 <span xml:lang="EN-US"><br />
web.xml</span>文件： <span xml:lang="EN-US"><br />
&lt;?xml&nbsp;version="1.0"&nbsp;encoding="ISO-8859-1"?&gt;<br />
&lt;!--<br />
&lt;!DOCTYPE&nbsp;web-app<br />
&nbsp;&nbsp;&nbsp;&nbsp;PUBLIC&nbsp;"-//Sun&nbsp;Microsystems,&nbsp;Inc.//DTD&nbsp;Web&nbsp;Application&nbsp;2.2//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd"&gt;<br />
--&gt;<br />
<br />
&lt;web-app&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;snoop&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-class&gt;SnoopServlet&lt;/servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;file&nbsp;&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-class&gt;ViewFile&lt;/servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;initial&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;1000&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;The&nbsp;initial&nbsp;value&nbsp;for&nbsp;the&nbsp;counter&nbsp;&nbsp;&lt;!--&nbsp;optional&nbsp;--&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;mv&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;*.wm&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;distributed/&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;security-role&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;role-name&gt;manager&lt;/role-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;role-name&gt;director&lt;/role-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;role-name&gt;president&lt;/role-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/security-role&gt;<br />
&lt;/web-app&gt;<br />
<br />
</span>处理程序： <span xml:lang="EN-US"><br />
import&nbsp;java.io.*;<br />
import&nbsp;java.util.*;<br />
import&nbsp;org.jdom.*;<br />
import&nbsp;org.jdom.input.*;<br />
import&nbsp;org.jdom.output.*;<br />
import&nbsp;org.jdom.xpath.*;<br />
<br />
/**<br />
&nbsp;*&nbsp;&lt;p&gt;&lt;code&gt;XPathReader&lt;/code&gt;&nbsp;demonstrates&nbsp;how&nbsp;to<br />
&nbsp;*&nbsp;&nbsp;&nbsp;read&nbsp;a&nbsp;Servlet&nbsp;2.2&nbsp;Web&nbsp;Archive&nbsp;file&nbsp;using&nbsp;XPath.<br />
&nbsp;*&nbsp;&lt;/p&gt;<br />
&nbsp;*&nbsp;<br />
&nbsp;*&nbsp;@author&nbsp;Jason&nbsp;Hunter<br />
&nbsp;*&nbsp;@version&nbsp;1.0<br />
&nbsp;*/<br />
public&nbsp;class&nbsp;XPathReader&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;throws&nbsp;IOException,&nbsp;JDOMException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(args.length&nbsp;!=&nbsp;1)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println("Usage:&nbsp;java&nbsp;XPathReader&nbsp;web.xml");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;filename&nbsp;=&nbsp;args[0];//</span>从命令行输入<span xml:lang="EN-US">web.xml<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintStream&nbsp;out&nbsp;=&nbsp;System.out;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SAXBuilder&nbsp;builder&nbsp;=&nbsp;new&nbsp;SAXBuilder();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;doc&nbsp;=&nbsp;builder.build(new&nbsp;File(filename));//</span>得到<span xml:lang="EN-US">Document</span>对象 <span xml:lang="EN-US"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Print&nbsp;servlet&nbsp;information<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XPath&nbsp;servletPath&nbsp;=&nbsp;XPath.newInstance("//servlet");//,</span>选择任意路径下<span xml:lang="EN-US">servlet</span>元素 <span xml:lang="EN-US"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;servlets&nbsp;=&nbsp;servletPath.selectNodes(doc);//</span>返回所有的<span xml:lang="EN-US">servlet</span>元素。 <span xml:lang="EN-US"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println("This&nbsp;WAR&nbsp;has&nbsp;"+&nbsp;servlets.size()&nbsp;+"&nbsp;registered&nbsp;servlets:");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator&nbsp;i&nbsp;=&nbsp;servlets.iterator();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(i.hasNext())&nbsp;{//</span>输出<span xml:lang="EN-US">servlet</span>信息 <span xml:lang="EN-US"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;servlet&nbsp;=&nbsp;(Element)&nbsp;i.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.print(""t"&nbsp;+&nbsp;servlet.getChild("servlet-name")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getTextTrim()&nbsp;+<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;for&nbsp;"&nbsp;+&nbsp;servlet.getChild("servlet-class")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getTextTrim());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;initParams&nbsp;=&nbsp;servlet.getChildren("init-param");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println("&nbsp;(it&nbsp;has&nbsp;"&nbsp;+&nbsp;initParams.size()&nbsp;+&nbsp;"&nbsp;init&nbsp;params)");&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Print&nbsp;security&nbsp;role&nbsp;information<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XPath&nbsp;rolePath&nbsp;=&nbsp;XPath.newInstance("//security-role/role-name/text()");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;roleNames&nbsp;=&nbsp;rolePath.selectNodes(doc);//</span>得到所有的角色名 <span xml:lang="EN-US"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(roleNames.size()&nbsp;==&nbsp;0)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println("This&nbsp;WAR&nbsp;contains&nbsp;no&nbsp;roles");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println("This&nbsp;WAR&nbsp;contains&nbsp;"&nbsp;+&nbsp;roleNames.size()&nbsp;+&nbsp;"&nbsp;roles:");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;roleNames.iterator();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(i.hasNext())&nbsp;{//</span>输出角色名 <span xml:lang="EN-US"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(""t"&nbsp;+&nbsp;((Text)i.next()).getTextTrim());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
<br />
</span>输出结果<span xml:lang="EN-US">:<br />
C:"java&gt;java&nbsp;&nbsp;&nbsp;XPathReader&nbsp;web.xml<br />
This&nbsp;WAR&nbsp;has&nbsp;2&nbsp;registered&nbsp;servlets:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;snoop&nbsp;for&nbsp;SnoopServlet&nbsp;(it&nbsp;has&nbsp;0&nbsp;init&nbsp;params)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;for&nbsp;ViewFile&nbsp;(it&nbsp;has&nbsp;1&nbsp;init&nbsp;params)<br />
This&nbsp;WAR&nbsp;contains&nbsp;3&nbsp;roles:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;manager<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;director<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;president</span></span> </p>
<img src ="http://www.blogjava.net/lcs/aggbug/161897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lcs/" target="_blank">lk</a> 2007-11-20 17:04 <a href="http://www.blogjava.net/lcs/archive/2007/11/20/161897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>