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; }} |
|
回复:模拟火车票软件(练习DOM4J对XML的读写等操作) 文章收藏, 网上资源
老鼠爱上猫(游客)发表评论于2010/9/21 17:25:37 |
|
» 1 »
|