﻿<?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/flustar/category/22096.html</link><description>不是因为有些事情难以做到，我们才失去自信，而是因为我们失去了自信，有些事情才难以做到。</description><language>zh-cn</language><lastBuildDate>Tue, 20 Nov 2007 23:21:47 GMT</lastBuildDate><pubDate>Tue, 20 Nov 2007 23:21:47 GMT</pubDate><ttl>60</ttl><item><title>基于spring+dwr+xml无刷新投票(调查)系统</title><link>http://www.blogjava.net/flustar/archive/2007/11/19/spring_dwr_xml.html</link><dc:creator>flustar</dc:creator><author>flustar</author><pubDate>Mon, 19 Nov 2007 10:04:00 GMT</pubDate><guid>http://www.blogjava.net/flustar/archive/2007/11/19/spring_dwr_xml.html</guid><wfw:comment>http://www.blogjava.net/flustar/comments/161691.html</wfw:comment><comments>http://www.blogjava.net/flustar/archive/2007/11/19/spring_dwr_xml.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flustar/comments/commentRss/161691.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flustar/services/trackbacks/161691.html</trackback:ping><description><![CDATA[<p>一、建立xml的数据结构，文件名为：vote.xml，内容如下：</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</p>
<p>&lt;votes voteTotalCount="0"&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;vote voteId="1" name="c语言 " voteCount="0" percentum="0" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;vote voteId="2" name="c++" voteCount="0" percentum="0" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;vote voteId="3" name="java" voteCount="0" percentum="0" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;vote voteId="4" name="汇编语言" voteCount="0" percentum="0" /&gt;</p>
<p>&nbsp;&lt;/votes&gt;</p>
<p>在你的web应用的根目录建立xml文件夹，将其拷贝到该目录下。</p>
<p>二、建立xml对应的bean</p>
<p>/**</p>
<p>&nbsp;* @author flustar</p>
<p>&nbsp;* @version 创建时间：Jul 11, 2007 5:17:53 PM</p>
<p>&nbsp;* 类说明</p>
<p>&nbsp;*/</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.</p>
<p>public class VoteBean {</p>
<p>&nbsp;&nbsp;&nbsp; private String voteId;</p>
<p>&nbsp; &nbsp;private String name;</p>
<p>&nbsp;&nbsp;&nbsp; private String voteCount;</p>
<p>&nbsp;&nbsp;&nbsp; private String voteTotalCount;</p>
<p>&nbsp;&nbsp;&nbsp; private String percentum;</p>
<p>&nbsp;&nbsp;&nbsp; public VoteBean() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getPercentum() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return percentum;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setPercentum(String percentum) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.percentum = percentum;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getVoteId() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return voteId;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public void setVoteId(String voteId) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.voteId = voteId;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getName() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return name;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setName(String name) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.name = name;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getVoteCount() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return voteCount;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public void setVoteCount(String voteCount) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.voteCount = voteCount;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p>三、建立处理具体逻辑的service</p>
<p>package com.flustar.service;</p>
<p>import java.io.FileInputStream;</p>
<p>import java.io.FileOutputStream;</p>
<p>import java.text.NumberFormat;</p>
<p>import java.util.ArrayList;</p>
<p>import java.util.Iterator;</p>
<p>import java.util.List;</p>
<p>import org.jdom.Attribute;</p>
<p>import org.jdom.Document;</p>
<p>import org.jdom.Element;</p>
<p>import org.jdom.input.SAXBuilder;</p>
<p>import org.jdom.output.Format;</p>
<p>import org.jdom.output.XMLOutputter;</p>
<p>import org.jdom.xpath.XPath;</p>
<p>import com.flustar.web.beans.VoteBean;</p>
<p>import com.flustar.web.config.ContextConfig;</p>
<p>public class VoteService {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Element root, vote;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Document doc;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; private Attribute voteTotalCount;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private VoteBean voteBean;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private List&lt;VoteBean&gt; voteBeanList;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private String path = ContextConfig.getContextPath()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + "/xml/vote.xml";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void buildDoc() throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileInputStream fi = null;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi = new FileInputStream(path);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAXBuilder sb = new SAXBuilder();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doc = sb.build(fi);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void formatDoc() throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Format format = Format.getCompactFormat();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format.setEncoding("UTF-8");// 设置xml文件的字符为UTF-8</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format.setIndent("&nbsp;&nbsp;&nbsp; ");// 设置xml文件缩进为4个空格</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMLOutputter xmlOut = new XMLOutputter(format);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlOut.output(doc, new FileOutputStream(path));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String floatToPercentum(Double doubleNum) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NumberFormat numberFormat = NumberFormat.getPercentInstance();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numberFormat.setMinimumFractionDigits(2);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // numberFormat.setMaximumIntegerDigits(2);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str = numberFormat.format(doubleNum);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //System.out.println(str);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return str;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void updateVoteCount(String voteId) throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buildDoc();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root = doc.getRootElement();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vote = (Element) XPath.selectSingleNode(root, "//vote[@voteId='"</p>
<p>&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; + voteId + "']");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int voteCount = Integer.parseInt(vote.getAttributeValue("voteCount")) + 1;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //System.out.println(voteCount);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vote.setAttribute("voteCount", String.valueOf(voteCount));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int totalCount = Integer.parseInt(root</p>
<p>&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; .getAttributeValue("voteTotalCount")) + 1;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteTotalCount = new Attribute("voteTotalCount", String</p>
<p>&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; .valueOf(totalCount));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.setAttribute(voteTotalCount);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(totalCount);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formatDoc();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; updateAllVoteCount();//更新所有的百分比</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void updateAllVoteCount()throws Exception{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buildDoc();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root=doc.getRootElement();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int totalCount = Integer.parseInt(root</p>
<p>&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; .getAttributeValue("voteTotalCount"));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List voteList=XPath.selectNodes(root,"/votes/vote");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;voteList.size();i++){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vote=(Element)voteList.get(i);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int voteCount = Integer.parseInt(vote.getAttributeValue("voteCount"));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(voteCount);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vote.setAttribute("voteCount", String.valueOf(voteCount));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vote.setAttribute("percentum", floatToPercentum(1.0 * voteCount</p>
<p>&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; / totalCount));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formatDoc();</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public List getAllVote() throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buildDoc();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBeanList = new ArrayList();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root = doc.getRootElement();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String totalCount = root.getAttributeValue("voteTotalCount");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List voteList = root.getChildren();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator i = voteList.iterator();</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (i.hasNext()) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBean = new VoteBean();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBean.setVoteTotalCount(totalCount);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vote = (Element) i.next();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String name = vote.getAttributeValue("name");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String voteCount = vote.getAttributeValue("voteCount");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String percentum = vote.getAttributeValue("percentum");</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBean.setName(name);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBean.setVoteCount(voteCount);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBean.setPercentum(percentum);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBeanList.add(voteBean);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return voteBeanList;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>}</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public String getVoteTotalCount() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return voteTotalCount;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public void setVoteTotalCount(String voteTotalCount) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.voteTotalCount = voteTotalCount;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p>&nbsp;</p>
<p>四、获取上下文路径的listener</p>
<p>package com.flustar.web.listener;</p>
<p>import javax.servlet.ServletContextEvent;</p>
<p>import javax.servlet.ServletContextListener;</p>
<p>import com.flustar.web.config.ContextConfig;</p>
<p>public class ConfigLoadContextListener implements&nbsp; ServletContextListener{</p>
<p>&nbsp;&nbsp;&nbsp; public void contextDestroyed(ServletContextEvent arg0) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void contextInitialized(ServletContextEvent contextEvent) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String contextPath = contextEvent.getServletContext().getRealPath("/");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ContextConfig.setContextPath(contextPath);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p>&nbsp;</p>
<p>public class ContextConfig {</p>
<p>&nbsp;&nbsp;&nbsp; private static String contextPath;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public static String getContextPath() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return contextPath;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public static void setContextPath(String contextPath) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ContextConfig.contextPath = contextPath;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</p>
<p>}</p>
<p>五、在applicationContext-service.xml中注册VoteService</p>
<p>&lt;bean name="voteService" class="com.flustar.service.imp.VoteService"/&gt;</p>
<p>六、注册xml，在你的web应用的WEB-INFO目录下建立applicationContext-dwr.xml文件，内容为：</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</p>
<p>&lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd"&gt;</p>
<p>&lt;dwr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;allow&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;create&nbsp; creator="spring" javascript="VoteService" &gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name="beanName" value="voteService"&gt;&lt;/param&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;include method="updateVoteCount"/&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;include method="getAllVote"/&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/create&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;convert converter="bean"&nbsp; match="com.flustar.web.beans.VoteBean" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/allow&gt;</p>
<p>&lt;/dwr&gt;</p>
<p>&nbsp;</p>
<p>七、修改web.xml</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</p>
<p>&lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee" </p>
<p>&nbsp;&nbsp;&nbsp; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" </p>
<p>&nbsp;&nbsp;&nbsp; xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" </p>
<p>&nbsp;&nbsp;&nbsp; version="2.4"&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</p>
<p>&nbsp;&nbsp;&nbsp; &lt;context-param&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /WEB-INF/classes/applicationContext-service.xml</p>
<p>&lt;/param-value&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/context-param&gt;</p>
<p>&nbsp;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.&nbsp;&nbsp;&nbsp;&nbsp; &lt;listener-class&gt;com.flustar.web.listener.ConfigLoadContextListener&lt;/listener-class&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp; &lt;servlet&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.directwebremoting.servlet.DwrServlet&lt;/servlet-class&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;init-param&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;debug&lt;/param-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;true&lt;/param-value&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;</p>
<p>&nbsp; &lt;/servlet&gt;</p>
<p>&nbsp;</p>
<p>&nbsp; &lt;servlet-mapping&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt;</p>
<p>&nbsp; &lt;/servlet-mapping&gt;&nbsp; </p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.&nbsp;&nbsp;&nbsp; </p>
<p>&lt;/web-app&gt;</p>
<p>八、jsp页面</p>
<p>1)</p>
<p>&lt;%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*" errorPage="" %&gt;</p>
<p>&lt;html&gt;</p>
<p>&lt;head&gt;</p>
<p>&lt;title&gt;投票系统&lt;/title&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='dwr/engine.js'&gt; &lt;/script&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='dwr/util.js'&gt; &lt;/script&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='dwr/interface/VoteService.js'&gt; &lt;/script&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript'&gt;</p>
<p>function vote(){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp; obj=document.getElementsByName('radio');&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp; (obj!=null){&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var j=0;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for&nbsp;&nbsp; (var&nbsp;&nbsp; i=0;i&lt;obj.length;i++){&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp; (obj[i].checked)&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VoteService.updateVoteCount(obj[i].value); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("投票成功!"); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj[i].checked=false; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j=j+1;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(j==obj.length){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("请选中其中的一项，再投票!");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp; function showwin(){</p>
<p>&nbsp;&nbsp;&nbsp; window.open('voteresult.htm','voteresult','height=400, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');</p>
<p>&nbsp;&nbsp; }</p>
<p>&nbsp;}</p>
<p>&lt;/script&gt;</p>
<p>&lt;/head&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;div &gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;h1 &gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你使用最多的一门语言是？</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/h1&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;div&gt;</p>
<p>&lt;div&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;span&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;h1&gt;&lt;input type="radio" name="radio" id="radio" value="1" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C语言&lt;/h1&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;span&gt; &lt;h1 &gt;&lt;input type="radio" name="radio" id="radio" value="2" /&gt;c++ &lt;/h1&gt; &lt;/span&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;span &gt;&lt;h1 &gt;&lt;input type="radio" name="radio" id="radio" value="3" /&gt;java &lt;/h1&gt; &lt;/span&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;span&gt;&lt;h1 &gt;&lt;input type="radio" name="radio" id="radio" value="4"/&gt;汇编语言&lt;/h1&gt; &lt;/span&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;div id="toupiao"&gt;&lt;input class="btn" type="button" value="投票" onClick="vote()" /&gt;&lt;input class="btn" type="button" value="查看" onClick="showwin()"/&gt;&lt;/div&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p>
<p>2)</p>
<p>&lt;html&gt;</p>
<p>&lt;head&gt;</p>
<p>&lt;meta http-equiv="content-type" content="text/html; charset=gb2312"&gt;</p>
<p>&lt;title&gt;投票结果&lt;/title&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='dwr/engine.js'&gt; &lt;/script&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='dwr/util.js'&gt; &lt;/script&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='dwr/interface/VoteService.js'&gt; &lt;/script&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' &gt;</p>
<p>function showresult(){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VoteService.getAllVote(function(data){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("totalCount").innerHTML=data[0].voteTotalCount;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var i=0;i&lt;data.length;i++){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var voteBean=data[i];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("xuanshou"+i).innerHTML=voteBean.name;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("baifenbi"+i).innerHTML=voteBean.percentum;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("piaoshu"+i).innerHTML=voteBean.voteCount;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("img"+i).width=voteBean.voteCount/data[0].voteTotalCount*310;</p>
<p>&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; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; });</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>}</p>
<p>&lt;/script&gt;</p>
<p>&lt;/head&gt;</p>
<p>&lt;body onLoad="showresult()"&gt;</p>
<p>&lt;div id="voteRs"&gt;</p>
<p>&lt;table border="0" cellpadding="0" cellspacing="0"&gt;</p>
<p>&nbsp; &lt;CAPTION valign="top" class="subject"&gt;</p>
<p>投票结果</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/CAPTION&gt;</p>
<p>&nbsp; &lt;tbody&gt;</p>
<p>&nbsp; &lt;tr &gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;th&gt;语言&lt;/th&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;th&gt;百分比&lt;/th&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;th&gt;票数&lt;/th&gt;</p>
<p>&nbsp; &lt;/tr&gt;</p>
<p>&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="xuanshou0"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="baifenbi0"&gt;&lt;/span&gt;&lt;img id="img0" src='images/voteprogress.gif' width=0 height=10&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="piaoshu0"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp; &lt;/tr&gt;</p>
<p>&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="xuanshou1"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="baifenbi1"&gt;&lt;/span&gt;&lt;img id="img1" src='images/voteprogress.gif' width=0 height=10&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="piaoshu1"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp; &lt;/tr&gt;</p>
<p>&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="xuanshou2"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="baifenbi2"&gt;&lt;/span&gt;&lt;img id="img2" src='images/voteprogress.gif' width=0 height=10&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="piaoshu2"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp; &lt;/tr&gt;</p>
<p>&nbsp;&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="xuanshou3"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="baifenbi3"&gt;&lt;/span&gt;&lt;img id="img3" src='images/voteprogress.gif' width=0 height=10&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="piaoshu3"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp; &lt;/tr&gt;</p>
<p>&nbsp;</p>
<p>&nbsp; &lt;/tbody&gt;</p>
<p>&lt;/table&gt;</p>
<p>共&lt;span id="totalCount"&gt;&lt;/span&gt;条投票&lt;br/&gt;</p>
<p>[&lt;span onClick="javascript:window.close();"&gt;关闭窗口&lt;/span&gt;]</p>
<p>&lt;/div&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p>
<p>&nbsp;<br />
</p>
<img src ="http://www.blogjava.net/flustar/aggbug/161691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flustar/" target="_blank">flustar</a> 2007-11-19 18:04 <a href="http://www.blogjava.net/flustar/archive/2007/11/19/spring_dwr_xml.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDOM使用详解及实例</title><link>http://www.blogjava.net/flustar/archive/2007/04/29/114561.html</link><dc:creator>flustar</dc:creator><author>flustar</author><pubDate>Sun, 29 Apr 2007 06:08:00 GMT</pubDate><guid>http://www.blogjava.net/flustar/archive/2007/04/29/114561.html</guid><wfw:comment>http://www.blogjava.net/flustar/comments/114561.html</wfw:comment><comments>http://www.blogjava.net/flustar/archive/2007/04/29/114561.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flustar/comments/commentRss/114561.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flustar/services/trackbacks/114561.html</trackback:ping><description><![CDATA[<span style="color: #3e3838;" class="checkoutHeader"><strong>JDOM是一个开源项目，它基于树型结构，利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。</strong></span>
<font style="color: #3e3838;" color="#009900">              </font>
<div style="color: #3e3838;" id="content">
<p>一、JDOM 简介</p>
<p>JDOM是一个开源项目，它基于树型结构，利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。</p>
<p>JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性（方法重载、集合概念以及映射），把SAX和DOM的功能有效地结合起来。</p>
<p>在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。</p>
<p>JDOM 在2000年的春天被Brett McLaughlin和Jason Hunter开发出来，以弥补DOM及SAX在实际应用当中的不足之处。</p>
<p>这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能，而对于DOM来说，JAVA程序员在使用时来用起来总觉得不太方便。</p>
<p>DOM的缺点主要是来自于由于Dom是一个接口定义语言（IDL）,它的任务是在不同语言实现中的一
个最低的通用标准，并不是为JAVA特别设计的。JDOM的最新版本为JDOM Beta
9。最近JDOM被收录到JSR-102内，这标志着JDOM成为了JAVA平台组成的一部分。</p>
<p>二、JDOM 包概览</p>
<p>JDOM是由以下几个包组成的<br>org.jdom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了所有的xml文档要素的java类</p>
<p>&nbsp;</p>
<p>org.jdom.adapters&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了与dom适配的java类</p>
<p>&nbsp;</p>
<p>org.jdom.filter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了xml文档的过滤器类</p>
<p>&nbsp;</p>
<p>org.jdom.input&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了读取xml文档的类</p>
<p>&nbsp;</p>
<p>org.jdom.output&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了写入xml文档的类</p>
<p>&nbsp;</p>
<p>org.jdom.transform&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了将jdom xml文档接口转换为其他xml文档接口</p>
<p>&nbsp;</p>
<p>org.jdom.xpath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包含了对xml文档xpath操作的类三、JDOM 类说明</p>
<p>1、org.JDOM这个包里的类是你J解析xml文件后所要用到的所有数据类型。</p>
<p>Attribute</p>
<p>CDATA</p>
<p>Coment</p>
<p>DocType</p>
<p>Document</p>
<p>Element</p>
<p>EntityRef</p>
<p>Namespace</p>
<p>ProscessingInstruction</p>
<p>Text</p>
<p>2、org.JDOM.transform在涉及xslt格式转换时应使用下面的2个类</p>
<p>JDOMSource</p>
<p>JDOMResult</p>
<p>org.JDOM.input</p>
<p>3、输入类，一般用于文档的创建工作</p>
<p>SAXBuilder</p>
<p>DOMBuilder</p>
<p>ResultSetBuilder</p>
<p>org.JDOM.output</p>
<p>4、输出类，用于文档转换输出</p>
<p>XMLOutputter</p>
<p>SAXOutputter</p>
<p>DomOutputter</p>
<p>JTreeOutputter</p>
<p>使用前注意事项：</p>
<p>1.JDOM对于JAXP 以及 TRax 的支持</p>
<p>JDOM 支持JAXP1.1：你可以在程序中使用任何的parser工具类,默认情况下是JAXP的parser。</p>
<p>制定特别的parser可用如下形式</p>
<p>SAXBuilder parser </p>
<p>&nbsp; = new SAXBuilder("org.apache.crimson.parser.XMLReaderImpl");</p>
<p>&nbsp;Document doc = parser.build("http://www.cafeconleche.org/");</p>
<p>&nbsp;// work with the document...</p>
<p>JDOM也支持TRaX：XSLT可通过JDOMSource以及JDOMResult类来转换（参见以后章节）</p>
<p>2.注意在JDOM里文档（Document）类由org.JDOM.Document 来表示。这要与org.w3c.dom中的Document区别开，这2种格式如何转换在后面会说明。</p>
<p>以下如无特指均指JDOM里的Document。</p>
<p>四、JDOM主要使用方法</p>
<p>1.Ducument类</p>
<p>(1)Document的操作方法：</p>
<p>Element root = new Element("GREETING");</p>
<p>Document doc = new Document(root);</p>
<p>root.setText("Hello JDOM!");</p>
<p>或者简单的使用Document doc = new Document(new Element("GREETING").setText("Hello JDOM!t"));</p>
<p>这点和DOM不同。Dom则需要更为复杂的代码，如下：</p>
<p>DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();</p>
<p>DocumentBuilder builder =factory.newDocumentBuilder();</p>
<p>Document doc = builder.newDocument();</p>
<p>Element root =doc.createElement("root");</p>
<p>Text text = doc.createText("This is the root");</p>
<p>root.appendChild(text);</p>
<p>doc.appendChild(root);</p>
<p>注意事项：JDOM不允许同一个节点同时被2个或多个文档相关联，要在第2个文档中使用原来老文档中的节点的话。首先需要使用detach()把这个节点分开来。</p>
<p>(2)从文件、流、系统ID、URL得到Document对象：</p>
<p>DOMBuilder builder = new DOMBuilder();</p>
<p>Document doc = builder.build(new File("jdom_test.xml"));</p>
<p>SAXBuilder builder = new SAXBuilder();</p>
<p>Document doc = builder.build(url);</p>
<p>在新版本中DOMBuilder 已经Deprecated掉 DOMBuilder.builder(url)，用SAX效率会比较快。</p>
<p>这里举一个小例子，为了简单起见，使用String对象直接作为xml数据源：</p>
<p>&nbsp;public jdomTest() {</p>
<p>&nbsp;&nbsp;&nbsp; String textXml = null;</p>
<p>&nbsp;&nbsp;&nbsp; textXml = "&lt;note&gt;";</p>
<p>&nbsp;&nbsp;&nbsp; textXml = textXml +</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "&lt;to&gt;aaa&lt;/to&gt;&lt;from&gt;bbb&lt;/from&gt;&lt;heading&gt;ccc&lt;/heading&gt;&lt;body&gt;ddd&lt;/body&gt;";</p>
<p>&nbsp;&nbsp;&nbsp; textXml = textXml + "&lt;/note&gt;";</p>
<p>&nbsp;&nbsp;&nbsp; SAXBuilder builder = new SAXBuilder();</p>
<p>&nbsp;&nbsp;&nbsp; Document doc = null;</p>
<p>&nbsp;&nbsp;&nbsp; Reader in= new StringReader(textXml);</p>
<p>&nbsp;&nbsp;&nbsp; try {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doc = builder.build(in);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element root = doc.getRootElement();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List ls = root.getChildren();//注意此处取出的是root节点下面的一层的Element集合</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter = ls.iterator(); iter.hasNext(); ) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element el = (Element) iter.next();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(el.getName().equals("to")){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(el.getText());</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; catch (IOException ex) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex.printStackTrace();</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; catch (JDOMException ex) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex.printStackTrace();</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp; }</p>
<p>(3)DOM的document和JDOM的Document之间的相互转换使用方法，简单！</p>
<p>DOMBuilder builder = new DOMBuilder();</p>
<p>org.jdom.Document jdomDocument = builder.build(domDocument);</p>
<p>DOMOutputter converter = new DOMOutputter();// work with the JDOM document&#8230;</p>
<p>org.w3c.dom.Document domDocument = converter.output(jdomDocument);</p>
<p>// work with the DOM document&#8230;</p>
<p>2.XML文档输出</p>
<p>XMLOutPutter类：</p>
<p>JDOM的输出非常灵活,支持很多种io格式以及风格的输出</p>
<p>Document doc = new Document(...);</p>
<p>XMLOutputter outp = new XMLOutputter();</p>
<p>outp.output(doc, fileOutputStream); // Raw output</p>
<p>outp.setTextTrim(true); // Compressed output</p>
<p>outp.output(doc, socket.getOutputStream());</p>
<p>outp.setIndent(" ");// Pretty output</p>
<p>outp.setNewlines(true);</p>
<p>outp.output(doc, System.out);</p>
<p>详细请参阅最新的JDOM API手册</p>
<p>3.Element 类：</p>
<p>(1)浏览Element树</p>
<p>Element root = doc.getRootElement();//获得根元素element</p>
<p>List allChildren = root.getChildren();// 获得所有子元素的一个list</p>
<p>List namedChildren = root.getChildren("name");// 获得指定名称子元素的list</p>
<p>Element child = root.getChild("name");//获得指定名称的第一个子元素</p>
<p>JDOM给了我们很多很灵活的使用方法来管理子元素（这里的List是java.util.List）</p>
<p>List allChildren = root.getChildren();</p>
<p>allChildren.remove(3); // 删除第四个子元素</p>
<p>allChildren.removeAll(root.getChildren("jack"));// 删除叫&#8220;jack&#8221;的子元素</p>
<p>root.removeChildren("jack"); // 便捷写法</p>
<p>allChildren.add(new Element("jane"));// 加入</p>
<p>root.addContent(new Element("jane")); // 便捷写法</p>
<p>allChildren.add(0, new Element("first"));</p>
<p>(2)移动Elements:</p>
<p>在JDOM里很简单</p>
<p>Element movable = new Element("movable");</p>
<p>parent1.addContent(movable); // place</p>
<p>parent1.removeContent(movable); // remove</p>
<p>parent2.addContent(movable); // add</p>
<p>在Dom里</p>
<p>Element movable = doc1.createElement("movable");</p>
<p>parent1.appendChild(movable); // place</p>
<p>parent1.removeChild(movable); // remove</p>
<p>parent2.appendChild(movable); // 出错!</p>
<p>补充：纠错性</p>
<p>JDOM的Element构造函数（以及它的其他函数）会检查element是否合法。</p>
<p>而它的add/remove方法会检查树结构，检查内容如下：</p>
<p>1.在任何树中是否有回环节点</p>
<p>2.是否只有一个根节点</p>
<p>3.是否有一致的命名空间（Namespaces） </p>
<p>(3)Element的text内容读取</p>
<p>&lt;description&gt;</p>
<p>A cool demo</p>
<p>&lt;/description&gt;</p>
<p>// The text is directly available</p>
<p>// Returns "\n A cool demo\n"</p>
<p>String desc = element.getText();</p>
<p>// There's a convenient shortcut</p>
<p>// Returns "A cool demo"</p>
<p>String desc = element.getTextTrim();</p>
<p>(4)Elment内容修改</p>
<p>element.setText("A new description");</p>
<p>3.可正确解释特殊字符</p>
<p>element.setText("&lt;xml&gt; content");</p>
<p>4.CDATA的数据写入、读出</p>
<p>element.addContent(new CDATA("&lt;xml&gt; content"));</p>
<p>String noDifference = element.getText();</p>
<p>混合内容</p>
<p>element可能包含很多种内容，比如说</p>
<p>&lt;table&gt;</p>
<p>&lt;!-- Some comment --&gt;</p>
<p>Some text</p>
<p>&lt;tr&gt;Some child element&lt;/tr&gt;</p>
<p>&lt;/table&gt;</p>
<p>取table的子元素tr</p>
<p>String text = table.getTextTrim();</p>
<p>Element tr = table.getChild("tr");</p>
<p>也可使用另外一个比较简单的方法</p>
<p>List mixedCo = table.getContent();</p>
<p>Iterator itr = mixedCo.iterator();</p>
<p>while (itr.hasNext()) {</p>
<p>Object o = i.next();</p>
<p>if (o instanceof Comment) {...}</p>
<p>// 这里可以写成Comment, Element, Text, CDATA,ProcessingInstruction, 或者是EntityRef的类型</p>
<p>}</p>
<p>// 现在移除Comment,注意这里游标应为1。这是由于回车键也被解析成Text类的缘故,所以Comment项应为1。</p>
<p>mixedCo.remove(1); </p>
<p>4.Attribute类</p>
<p>&lt;table width="100%" border="0"&gt; &lt;/table&gt;</p>
<p>String width = table.getAttributeValue("width");//获得attribute</p>
<p>int border = table.getAttribute("width").getIntValue();</p>
<p>table.setAttribute("vspace", "0");//设置attribute</p>
<p>table.removeAttribute("vspace");// 删除一个或全部attribute</p>
<p>table.getAttributes().clear(); </p>
<p>5.处理指令(Processing Instructions)操作</p>
<p>一个Pls的例子</p>
<p>&lt;?br?&gt;</p>
<p>&lt;?cocoon-process type="xslt"?&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目标&nbsp;&nbsp;&nbsp;&nbsp; 数据</p>
<p>处理目标名称(Target)</p>
<p>String target = pi.getTarget();</p>
<p>获得所有数据（data），在目标（target）以后的所有数据都会被返回。</p>
<p>String data = pi.getData();</p>
<p>String type = pi.getValue("type");获得指定属性的数据</p>
<p>List ls = pi.getNames();获得所有属性的名称</p>
<p>6.命名空间操作</p>
<p>&lt;xhtml:html </p>
<p>&nbsp;xmlns:xhtml="http://www.w3.org/1999/xhtml"&gt;</p>
<p>&lt;xhtml:title&gt;Home Page&lt;/xhtml:title&gt;</p>
<p>&lt;/xhtml:html&gt;</p>
<p>Namespace xhtml = Namespace.getNamespace("xhtml", "http://www.w3.org/1999/xhtml");</p>
<p>List kids = html.getChildren("title", xhtml);</p>
<p>Element kid = html.getChild("title", xhtml);</p>
<p>kid.addContent(new Element("table", xhtml));</p>
<p>7.XSLT格式转换</p>
<p>使用以下函数可对XSLT转换</p>
<p>最后如果你需要使用w3c的Document则需要转换一下。</p>
<p>public static Document transform(String stylesheet，Document in)</p>
<p>&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; throws JDOMException {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; try {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transformer transformer = TransformerFactory.newInstance()</p>
<p>&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; .newTransformer(new StreamSource(stylesheet));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDOMResult out = new JDOMResult();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transformer.transform(new JDOMSource(in), out);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return out.getDeocument();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; catch (TransformerException e) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new JDOMException("XSLT Trandformation failed", e);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp; }</p>
<p>五、用例:</p>
<p>1、生成xml文档：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>public class WriteXML{</p>
<p>&nbsp;&nbsp;&nbsp; public void BuildXML() throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element root,student,number,name,age;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root = new Element("student-info"); //生成根元素：student-info</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; student = new Element("student"); //生成元素：student(number,name,age)&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; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; number = new Element("number");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name = new Element("name");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; age = new Element("age");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document doc = new Document(root); //将根元素植入文档doc中</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; number.setText("001");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name.setText("lnman");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; age.setText("24");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; student.addContent(number);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; student.addContent(name);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; student.addContent(age);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.addContent(student);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Format format = Format.getCompactFormat();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format.setEncoding("gb2312"); //设置xml文件的字符为gb2312</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format.setIndent("&nbsp;&nbsp;&nbsp; "); //设置xml文件的缩进为4个空格</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMLOutputter XMLOut = new XMLOutputter(format);//元素后换行一层元素缩四格 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMLOut.output(doc, new FileOutputStream("studentinfo.xml"));&nbsp; </p>
<p>}</p>
<p>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WriteXML w = new WriteXML();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Now we build an XML document .....");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; w.BuildXML();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("finished!");</p>
<p>}</p>
<p>}</p>
<p>生成的xml文档为：</p>
<p>&lt;?xml version="1.0" encoding="gb2312"?&gt;</p>
<p>&lt;student-info&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;student&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;number&gt;001&lt;/number&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;lnman&lt;/name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;age&gt;24&lt;/age&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/student&gt;</p>
<p>&lt;/student-info&gt;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>创建XML文档2：</p>
<p>&nbsp;public class CreateXML {</p>
<p>&nbsp; public void Create() {</p>
<p>&nbsp;&nbsp; try {</p>
<p>&nbsp;&nbsp;&nbsp; Document doc = new Document();&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; ProcessingInstruction pi=new ProcessingInstruction("xml-stylesheet","type="text/xsl" href="test.xsl"");</p>
<p>&nbsp;&nbsp;&nbsp; doc.addContent(pi);&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; Namespace ns = Namespace.getNamespace("http://www.bromon.org" );</p>
<p>&nbsp;&nbsp;&nbsp; Namespace ns2 = Namespace.getNamespace("other", "http://www.w3c.org" );</p>
<p>&nbsp;&nbsp;&nbsp; Element root = new Element("根元素", ns);</p>
<p>&nbsp;&nbsp;&nbsp; root.addNamespaceDeclaration(ns2);</p>
<p>&nbsp;&nbsp;&nbsp; doc.setRootElement(root);</p>
<p>&nbsp;&nbsp;&nbsp; Element el1 = new Element("元素一");</p>
<p>&nbsp;&nbsp;&nbsp; el1.setAttribute("属性", "属性一");&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; Text text1=new Text("元素值");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element em = new Element("元素二").addContent("第二个元素");</p>
<p>&nbsp;&nbsp;&nbsp; el1.addContent(text1);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; el1.addContent(em);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element el2 = new Element("元素三").addContent("第三个元素");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.addContent(el1);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.addContent(el2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //缩进四个空格,自动换行,gb2312编码</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMLOutputter outputter = new XMLOutputter("&nbsp; ", true,"GB2312");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputter.output(doc, new FileWriter("test.xml"));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(Exception e)&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(e);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String args[]) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new CreateXML().Create();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;}</p>
<p>2、读取xml文档的例子：</p>
<p>import org.jdom.output.*;</p>
<p>import org.jdom.input.*;</p>
<p>import org.jdom.*;</p>
<p>import java.io.*;</p>
<p>import java.util.*;</p>
<p>public class ReadXML{</p>
<p>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAXBuilder builder = new SAXBuilder();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document read_doc = builder.build("studentinfo.xml");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element stu = read_doc.getRootElement();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List list = stu.getChildren("student");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i = 0;i &lt; list.size();i++) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element e = (Element)list.get(i);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str_number = e.getChildText("number");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str_name = e.getChildText("name");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str_age = e.getChildText("age");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("---------STUDENT--------------");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("NUMBER:" + str_number);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("NAME:" + str_name);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("AGE:" + str_age);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("------------------------------");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p>3、DTD验证的：</p>
<p>&nbsp;public class XMLWithDTD {</p>
<p>&nbsp; public void validate()&nbsp; {</p>
<p>&nbsp;&nbsp; try {</p>
<p>&nbsp;&nbsp;&nbsp; SAXBuilder builder = new SAXBuilder(true);</p>
<p>&nbsp;&nbsp;&nbsp; builder.setFeature("http://xml.org/sax/features/validation";,true); </p>
<p>&nbsp;&nbsp;&nbsp; Document doc = builder.build(new FileReader("author.xml"));&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; System.out.println("搞掂");</p>
<p>&nbsp;&nbsp;&nbsp; XMLOutputter outputter = new XMLOutputter();</p>
<p>&nbsp;&nbsp;&nbsp; outputter.output(doc, System.out);</p>
<p>&nbsp;&nbsp; }catch(Exception e) {</p>
<p>&nbsp;&nbsp;&nbsp; System.out.println(e);</p>
<p>&nbsp;&nbsp; }&nbsp;&nbsp; </p>
<p>&nbsp; }</p>
<p>&nbsp; public static void main(String args[]) {</p>
<p>&nbsp;&nbsp; new XMLWithDTD().validate();</p>
<p>&nbsp; }&nbsp; </p>
<p>&nbsp;}</p>
<p>&nbsp;　　需要说明的是，这个程序没有指明使用哪个DTD文件。DTD文件的位置是在XML中指定的，而
且DTD不支持命名空间，一个XML只能引用一个DTD，所以程序直接读取XML中指定的DTD，程序本身不用指定。不过这样一来，好象就只能使用外部式
的DTD引用方式了？高人指点。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>4、XML Schema验证的：</p>
<p>&nbsp;public class XMLWithSchema {</p>
<p>&nbsp; String xml="test.xml";</p>
<p>&nbsp; String schema="test-schema.xml";</p>
<p>&nbsp; public void validate() {</p>
<p>&nbsp;&nbsp; try {</p>
<p>&nbsp;&nbsp;&nbsp; SAXBuilder builder = new SAXBuilder(true);</p>
<p>&nbsp;&nbsp;&nbsp; //指定约束方式为XML schema</p>
<p>&nbsp;&nbsp;&nbsp; builder.setFeature("http://apache.org/xml/features/validation/schema";,&nbsp; true);</p>
<p>&nbsp;&nbsp;&nbsp; //导入schema文件</p>
<p>builder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";,schema); </p>
<p>&nbsp;&nbsp;&nbsp; Document doc = builder.build(new FileReader(xml));&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; System.out.println("搞掂");</p>
<p>&nbsp;&nbsp;&nbsp; XMLOutputter outputter = new XMLOutputter();</p>
<p>&nbsp;&nbsp;&nbsp; outputter.output(doc, System.out);</p>
<p>&nbsp;&nbsp; }catch(Exception e) {</p>
<p>&nbsp;&nbsp;&nbsp; System.out.println("验证失败:"+e);</p>
<p>&nbsp;&nbsp; }&nbsp; </p>
<p>&nbsp; } </p>
<p>&nbsp;}</p>
<p>&nbsp;上面的程序就指出了要引入的XML Schema文件的位置。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;系统默认输出是UTF-8，这有可能导致出现乱码。</p>
<p>5、Xpath例子：</p>
<p>JDOM的关于XPATH的api在org.jdom.xpath这个包里。这个包下，有一个抽象类
XPath.java和实现类JaxenXPath.java， 使用时先用XPath类的静态方法newInstance(String
xpath)得到XPath对象，然后调用它的selectNodes(Object
context)方法或selectSingleNode(Object
context)方法，前者根据xpath语句返回一组节点(List对象)；后者根据一个xpath语句返回符合条件的第一个节点(Object类
型)。请看jdom-1.0自带的范例程序： </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 它分析在web.xml文件中的注册的servlet的个数及参数个数，并输出角色名。 </p>
<p>web.xml文件： </p>
<p>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt; </p>
<p>&lt;!-- </p>
<p>&lt;!DOCTYPE web-app </p>
<p>&nbsp;&nbsp;&nbsp; PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" </p>
<p>&nbsp;&nbsp;&nbsp; "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd"&gt; </p>
<p>--&gt; </p>
<p>&lt;web-app&gt; </p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;snoop&lt;/servlet-name&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;SnoopServlet&lt;/servlet-class&gt; </p>
<p>&nbsp;&nbsp;&nbsp; &lt;/servlet&gt; </p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;file &lt;/servlet-name&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;ViewFile&lt;/servlet-class&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;initial&lt;/param-name&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;1000&lt;/param-value&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;The initial value for the counter&nbsp; &lt;!-- optional --&gt;&lt;/description&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt; </p>
<p>&nbsp;&nbsp;&nbsp; &lt;/servlet&gt; </p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet-mapping&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;mv&lt;/servlet-name&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;*.wm&lt;/url-pattern&gt; </p>
<p>&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt; </p>
<p>&nbsp;&nbsp;&nbsp; &lt;distributed/&gt; </p>
<p>&nbsp;&nbsp;&nbsp; &lt;security-role&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;role-name&gt;manager&lt;/role-name&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;role-name&gt;director&lt;/role-name&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;role-name&gt;president&lt;/role-name&gt; </p>
<p>&nbsp;&nbsp;&nbsp; &lt;/security-role&gt; </p>
<p>&lt;/web-app&gt; </p>
<p>处理程序： </p>
<p>import java.io.*; </p>
<p>import java.util.*;&nbsp; </p>
<p>public class XPathReader {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws IOException, JDOMException { </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (args.length != 1) { </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println("Usage: java XPathReader web.xml"); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filename = args[0];//从命令行输入web.xml </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintStream out = System.out; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAXBuilder builder = new SAXBuilder(); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document doc = builder.build(new File(filename));//得到Document对象 </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Print servlet information </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XPath servletPath = XPath.newInstance("//servlet");//,选择任意路径下servlet元素 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List servlets = servletPath.selectNodes(doc);//返回所有的servlet元素。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("This WAR has "+ servlets.size() +" registered servlets:"); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator i = servlets.iterator(); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (i.hasNext()) {//输出servlet信息 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element servlet = (Element) i.next(); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print("\t" + servlet.getChild("servlet-name") </p>
<p>&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() + </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " for " + servlet.getChild("servlet-class") </p>
<p>&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()); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List initParams = servlet.getChildren("init-param"); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(" (it has " + initParams.size() + " init params)");&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Print security role information </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XPath rolePath = XPath.newInstance("//security-role/role-name/text()"); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List roleNames = rolePath.selectNodes(doc);//得到所有的角色名 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (roleNames.size() == 0) { </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("This WAR contains no roles"); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else { </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("This WAR contains " + roleNames.size() + " roles:"); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i = roleNames.iterator(); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (i.hasNext()) {//输出角色名 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("\t" + ((Text)i.next()).getTextTrim()); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>} </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>输出结果: </p>
<p>C:\java&gt;java&nbsp;&nbsp; XPathReader web.xml </p>
<p>This WAR has 2 registered servlets: </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; snoop for SnoopServlet (it has 0 init params) </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file for ViewFile (it has 1 init params) </p>
<p>This WAR contains 3 roles: </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; manager </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; director </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; president</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>6、数据输入要用到XML文档要通过org.jdom.input包，反过来需要org.jdom.output。如前面所说，关是看API文档就能够使用。 </p>
<p>我们的例子读入XML文件exampleA.xml，加入一条处理指令，修改第一本书的价格和作者，并添加一条属性，然后写入文件exampleB.xml： </p>
<p>//exampleA.xml </p>
<p>&lt;?xml version="1.0" encoding="GBK"?&gt; </p>
<p>&lt;bookList&gt; </p>
<p>&lt;book&gt; </p>
<p>&lt;name&gt;Java编程入门&lt;/name&gt; </p>
<p>&lt;author&gt;张三&lt;/author&gt; </p>
<p>&lt;publishDate&gt;2002-6-6&lt;/publishDate&gt; </p>
<p>&lt;price&gt;35.0&lt;/price&gt; </p>
<p>&lt;/book&gt; </p>
<p>&lt;book&gt; </p>
<p>&lt;name&gt;XML在Java中的应用&lt;/name&gt; </p>
<p>&lt;author&gt;李四&lt;/author&gt; </p>
<p>&lt;publishDate&gt;2002-9-16&lt;/publishDate&gt; </p>
<p>&lt;price&gt;92.0&lt;/price&gt; </p>
<p>&lt;/book&gt; </p>
<p>&lt;/bookList&gt; </p>
<p>//testJDOM.java </p>
<p>import org.jdom.*; </p>
<p>import org.jdom.output.*; </p>
<p>import org.jdom.input.*; </p>
<p>import java.io.*; </p>
<p>public class TestJDOM{ </p>
<p>public static void main(String args[])throws Exception{ </p>
<p>SAXBuilder sb = new SAXBuilder(); </p>
<p>//从文件构造一个Document，因为XML文件中已经指定了编码，所以这里不必了 </p>
<p>Document doc = sb.build(new FileInputStream("exampleA.xml")); </p>
<p>ProcessingInstruction pi = new ProcessingInstruction//加入一条处理指令 </p>
<p>("xml-stylesheet","href=\"bookList.html.xsl\" type=\"text/xsl\""); </p>
<p>doc.addContent(pi); </p>
<p>Element root = doc.getRootElement(); //得到根元素 </p>
<p>java.util.List books = root.getChildren(); //得到根元素所有子元素的集合 </p>
<p>Element book = (Element)books.get(0); //得到第一个book元素 </p>
<p>//为第一本书添加一条属性 </p>
<p>Attribute a = new Attribute("hot","true"); </p>
<p>book.setAttribute(a); </p>
<p>Element author = book.getChild("author"); //得到指定的字元素 </p>
<p>author.setText("王五"); //将作者改为王五 </p>
<p>//或 Text t = new Text("王五");book.addContent(t); </p>
<p>Element price = book.getChild("price"); //得到指定的字元素 </p>
<p>//修改价格，比较郁闷的是我们必须自己转换数据类型，而这正是JAXB的优势 </p>
<p>author.setText(Float.toString(50.0f)); </p>
<p>String indent = " "; </p>
<p>boolean newLines = true; </p>
<p>XMLOutputter outp = new XMLOutputter(indent,newLines,"GBK"); </p>
<p>outp.output(doc, new FileOutputStream("exampleB.xml")); </p>
<p>} </p>
<p>}; </p>
<p>执行结果exampleB.xml： </p>
<p>&lt;?xml version="1.0" encoding="GBK"?&gt; </p>
<p>&lt;bookList&gt; </p>
<p>&lt;book hot=&#8221;true&#8221;&gt; </p>
<p>&lt;name&gt;Java编程入门&lt;/name&gt; </p>
<p>&lt;author&gt;50.0&lt;/author&gt; </p>
<p>&lt;publishDate&gt;2002-6-6&lt;/publishDate&gt; </p>
<p>&lt;price&gt;35.0&lt;/price&gt; </p>
<p>&lt;/book&gt; </p>
<p>&lt;book&gt; </p>
<p>&lt;name&gt;XML在Java中的应用&lt;/name&gt; </p>
<p>&lt;author&gt;李四&lt;/author&gt; </p>
<p>&lt;publishDate&gt;2002-9-16&lt;/publishDate&gt; </p>
<p>&lt;price&gt;92.0&lt;/price&gt; </p>
<p>&lt;/book&gt; </p>
<p>&lt;/bookList&gt; </p>
<p>&lt;?xml-stylesheet href="bookList.html.xsl" type="text/xsl"?&gt; </p>
<p>在默认情况下，JDOM的Element类的getText()这类的方法不会过滤空白字符，如果你需要过滤，用setTextTrim() 。</p>
</div><img src ="http://www.blogjava.net/flustar/aggbug/114561.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flustar/" target="_blank">flustar</a> 2007-04-29 14:08 <a href="http://www.blogjava.net/flustar/archive/2007/04/29/114561.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>