ligaogang的专栏

saxParser为java中基于事件驱动的解析xml类:

新建xml文件:

//注意一定要将编码设为:utf-8

<?xml version="1.0" encoding="utf-8"?><trainList><北京西站><始发车站><车次><名字>T83次</名字><运行区间>北京西-南京</运行区间><开车时间>20:17</开车时间><终到时间>09:10</终到时间></车次><车次><名字>T119次</名字><运行区间>北京西-上海</运行区间><开车时间>23:25</开车时间><终到时间>10:10</终到时间></车次></始发车站><终到列车><车次><名字>T84次</名字><运行区间>南京-北京西</运行区间><开车时间>21:17</开车时间><终到时间>10:10</终到时间></车次><车次><名字>T200次</名字><运行区间>上海-北京西</运行区间><开车时间>21:17</开车时间><终到时间>10:10</终到时间></车次></终到列车></北京西站><广州站><始发车站><车次><名字>T186次</名字><运行区间>广东-武汉</运行区间><开车时间>22:17</开车时间><终到时间>09:24</终到时间></车次><车次><名字>T78次</名字><运行区间>广东-长沙</运行区间><开车时间>22:17</开车时间><终到时间>09:24</终到时间></车次></始发车站><终到列车><车次><名字>T78次</名字><运行区间>南京-广东</运行区间><开车时间>21:17</开车时间><终到时间>10:10</终到时间></车次><车次><名字>T193次</名字><运行区间>上海-广东</运行区间><开车时间>21:15</开车时间><终到时间>12:10</终到时间></车次></终到列车></广州站></trainList>

//新建jsp:

//注意这里将页面编码设为;gb2312,利用http表单参数设置javabean的参数,要将表单提交参数设置才会成功。

<%@ page contentType="text/html; charset=gb2312" %><%@ page import="com.ligaogang.SAXParser.*" %><jsp:useBean id="ok" class="com.ligaogang.SAXParser.SAXBean" scope="page"/><jsp:setProperty property="stationName" name="ok" param="stationName"/><jsp:setProperty property="startOrArrive" name="ok" param="startOrArrive"/><HTML><BODY><FONT size=2><form action="" method="post">选择站名:<select name="stationName"><option value="广州站">广州站<option value="北京西站">北京西站</select>选择始发或终到:<input type="radio" name="startOrArrive" value="始发车站"/>始发列车<input type="radio" name="startOrArrive" value="终到列车" checked="default"/>终到列车<br><input type="submit" value="乘车"/></form><jsp:getProperty name="ok" property="stationName"/><br/><jsp:getProperty name="ok" property="startOrArrive"/>:<br/><jsp:getProperty name="ok" property="trainMessages"/><br/></FONT></BODY></HTML>

新建javabean文件;:

package com.ligaogang.SAXParser;import java.util.Date;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.helpers.DefaultHandler;public class SAXBean {String stationName="北京西站";String startOrArrive="终到列车";StringBuffer trainMessage=new StringBuffer();SAXParserFactory factory=null;SAXParser saxParser=null;MyHandler handler;public void setStationName(String s){System.out.println("set…"+stationName);stationName=s.trim(); try{byte b[]=stationName.getBytes("ISO-8859-1");stationName=new String(b); }catch(Exception e){e.printStackTrace();}}public String getStationName(){System.out.println("get…"+stationName);return this.stationName;}public void setStartOrArrive(String s){startOrArrive=s.trim(); //去除其中的空格try{byte b[]=startOrArrive.getBytes("ISO-8859-1");startOrArrive=new String(b); //将字符串编码为iso-8859-1System.out.println("get…"+startOrArrive);}catch(Exception e){e.printStackTrace();}}public String getStartOrArrive(){return this.startOrArrive;}public StringBuffer getTrainMessages(){try{factory=SAXParserFactory.newInstance();saxParser=factory.newSAXParser();handler=new MyHandler(trainMessage,stationName,startOrArrive);saxParser.parse("trainList.xml",handler);}catch(Exception e){e.printStackTrace();}return this.trainMessage;}class MyHandler extends DefaultHandler{StringBuffer trainMessages;String stationName,startOrArrive;boolean 站名标记=false,始发或终到标记=false;MyHandler(StringBuffer mess,String stationN,String startOrArr){trainMessages=mess;stationName=stationN;startOrArrive=startOrArr;System.out.println("stationName:"+stationN+"trainMessages:"+mess.toString()+"startOrArrive:"+startOrArr+(new Date()).toString());}public void startDocument(){System.out.println("StartDocument….");trainMessages.append("<table border=2>");trainMessages.append("<tr>");trainMessages.append("<th>车次名字</th>");trainMessages.append("<th>运行区间</th>");trainMessages.append("<th>发车时间</th>");trainMessages.append("<th>终到时间</th>");trainMessages.append("</tr>");}public void endDocument(){System.out.println("endDocument….");trainMessages.append("</table>");}public void startElement(String uri,String localName,String qName,Attributes atts){System.out.println("StartElement….");System.out.println(qName);System.out.println(stationName);qName=qName.trim();if(qName.equals(stationName)){站名标记=true;trainMessages.append(" "+qName);}if(qName.equals(startOrArrive)){始发或终到标记=true;}if(qName.endsWith("车次")){trainMessages.append("<tr>");}}public void endElement(String uri,String localName,String qName){System.out.println("EndElement….");if(qName.startsWith(stationName)){站名标记=false;}if(qName.startsWith(startOrArrive)){始发或终到标记=false;}if(qName.endsWith("车次")){trainMessages.append("</tr>");}}public void characters(char[] ch,int start,int length){System.out.println("characters….");String text=new String(ch,start,length);text=text.trim();if(站名标记==true&&始发或终到标记==true&&text.length()>0){String str=text.trim();trainMessages.append("<td>"+str+"</td>");}}}}

,世界没有永久的冬天;不要讨厌麻烦,

ligaogang的专栏

相关文章:

你感兴趣的文章:

标签云: