本站首页    管理页面    写新日志    退出

«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告

  如果你忍了,欺负你的人将来可能就进监狱了。如果你反击,欺负你的人将来可能就获选十大杰出青年了。

        QQ: 3159671

http://greenboy.javaeye.com/

http://blog.sina.com.cn/u/1278341164 小鸟吹烟


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:小鸟吹烟
日志总数:157
评论数量:424
留言数量:-1
访问次数:1257662
建立时间:2006年10月23日




[XML]模拟火车票软件(练习DOM4J对XML的读写等操作)
文章收藏,  网上资源

tone 发表于 2007/2/28 12:52:41

http://sunnypig1984.spaces.live.com/blog/ 模拟火车票软件(练习DOM4J对XML的读写等操作)   模拟火车票软件,是我自己的练习题,没有整理和注释,只做以后查看之用。与此有关的文件有tickets.xsd,tickets.xml存储车票,Ticket.java声明车票,StoreException.java包装异常,TestTicket.java测试类等不再写入。package ticket.dom4j.wkjava;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Writer;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;import org.xml.sax.SAXException;public class TicketXMLDAO { private Document doc; private String filename = "tickets.xml"; private SimpleDateFormat dateFmt = new SimpleDateFormat("yyyy-MM-dd"); public TicketXMLDAO() throws StoreException { super(); try { doc = load(filename); } catch (Exception e) { e.printStackTrace(); throw new StoreException(e); } } private Document load(String xmlfile)     throws SAXException, FileNotFoundException, DocumentException {     SAXReader reader = new SAXReader(true);     reader.setFeature("http://apache.org/xml/features/validation/schema",true);     return reader.read(new FileInputStream(xmlfile)); } public void store(String filename) throws IOException {     Writer out = new OutputStreamWriter(new FileOutputStream(filename),"utf-8");     OutputFormat format = OutputFormat.createPrettyPrint();     XMLWriter writer = new XMLWriter(out, format);     writer.write(this.doc);     out.close(); } public Ticket insertTicket(Ticket ticket) throws StoreException { String xpath = "/tickets";        Element tickets = (Element)doc.selectSingleNode(xpath);        ticket.setId(getNextID());        Element t = tickets.addElement("ticket");        t.addAttribute( "id", ticket.getId() );        t.addElement("from").addText(ticket.getFrom());        t.addElement("to").addText(ticket.getTo());        t.addElement("price").addText(ticket.getPrice()+"");        t.addElement("start").addText(dateFmt.format(ticket.getStart()));                try { store(filename); } catch (IOException e) { e.printStackTrace(); throw new StoreException(e); } return ticket;    } private String getNextID() { String xpath = "/tickets/ticket"; List list = doc.selectNodes(xpath); int idValue = 0; for (Iterator i = list.iterator();i.hasNext();){ Element t = (Element)i.next(); String id = t.attributeValue("id"); int value = Integer.parseInt(id.substring(1)); idValue = value>idValue? value : idValue; } idValue++; return "T" + idValue; } public Ticket updateTicket(Ticket ticket) throws StoreException { String xpath = "/tickets/ticket[@id = \" " + ticket.getId() + " \"]";        Element t = (Element)doc.selectSingleNode(xpath);        t.addElement("from").setText(ticket.getFrom());        t.addElement("to").setText(ticket.getTo());        t.addElement("price").setText(ticket.getPrice()+"");        t.addElement("start").setText(dateFmt.format(ticket.getStart()));                try { store(filename); } catch (IOException e) { e.printStackTrace(); throw new StoreException(e); } return ticket;    } public Ticket removeTicket(Ticket ticket) throws StoreException{ String xpath = "/tickets/ticket[@id = \" " + ticket.getId() + " \"]";        Element t = (Element)doc.selectSingleNode(xpath);        Element parent = t.getParent();        parent.remove(t);        try { store(filename); } catch (IOException e) { e.printStackTrace(); throw new StoreException(e); } return ticket; } public Ticket findTicket(String id) throws StoreException { String xpath = "/tickets/ticket[@id = \" " + id + " \"]"; Ticket ticket = null;         Element t = (Element)doc.selectSingleNode(xpath); if(t==null) return ticket; ticket = new Ticket(); ticket.setId(t.attributeValue("id"));        ticket.setFrom(t.elementText("from"));        ticket.setTo(t.elementText("to"));        ticket.setPrice(Double.parseDouble(t.elementText("price")));        try { ticket.setStart(dateFmt.parse(t.elementText("start"))); } catch (ParseException e) { e.printStackTrace(); throw new StoreException(e); }         return ticket;    } public List findTickets() throws StoreException { List list = new ArrayList(); //String xpath = "/tickets/ticket"; List tickets = doc.getRootElement().elements(); for (Iterator i = list.iterator();i.hasNext();){ Element t = (Element)i.next(); Ticket ticket = new Ticket(); ticket.setId(t.attributeValue("id"));         ticket.setFrom(t.elementText("from"));         ticket.setTo(t.elementText("to"));         ticket.setPrice(Double.parseDouble(t.elementText("price")));         try { ticket.setStart(dateFmt.parse(t.elementText("start"))); } catch (ParseException e) { e.printStackTrace(); throw new StoreException(e); } list.add(ticket); } return list;    } public List findTicketByFrom(String from) throws StoreException { List list = new ArrayList(); String xpath = "/tickets/ticket[from=\""+from+"\"]"; List tickets = doc.selectNodes(xpath); for (Iterator i = list.iterator();i.hasNext();){ Element t = (Element)i.next(); Ticket ticket = new Ticket(); ticket.setId(t.attributeValue("id"));         ticket.setFrom(t.elementText("from"));         ticket.setTo(t.elementText("to"));         ticket.setPrice(Double.parseDouble(t.elementText("price")));         try { ticket.setStart(dateFmt.parse(t.elementText("start"))); } catch (ParseException e) { e.printStackTrace(); throw new StoreException(e); } list.add(ticket); } return list;    }}


阅读全文(2670) | 回复(1) | 编辑 | 精华
 


回复:模拟火车票软件(练习DOM4J对XML的读写等操作)
文章收藏,  网上资源

老鼠爱上猫(游客)发表评论于2010/9/21 17:25:37

I Love XML!!!


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.251 second(s), page refreshed 144761221 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号