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


«Mar.2026»
1234567
891011121314
15161718192021
22232425262728
293031


公告
暂无公告...

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:29
评论数量:19
留言数量:0
访问次数:119269
建立时间:2006年5月29日




[java与xml]利用JDOM对xml实现增删改查的java应用程序实现笔记
软件技术

krf301 发表于 2006/5/29 17:05:18

今天是学习JDOM的第一天,在网上搜到一些好文章,但都没有写应用程序的,差不多都是对jsp的应用。由于我学的目的是用于rcp中的实现,故对其进行重写,改写。虽不能算是原创,但也是学习的成果。 故发贴出来与大家共享,取之于网,用之于网,献之于网。 package cn.com.javachen.myxml; import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.Iterator;import java.util.List;import java.util.Vector; import org.jdom.Document;import org.jdom.Element;import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; public class XmlBean { private String bookname, author, pub, price, pubdate;  public String getbookname() {  return bookname; }  public String getauthor() {  return author; }  public String getpub() {  return pub; }  public String getprice() {  return price; }  public String getpubdate() {  return pubdate; }  public void setbookname(String bookname) {  this.bookname = bookname; }  public void setauthor(String author) {  this.author = author; }  public void setpub(String pub) {  this.pub = pub; }  public void setprice(String price) {  this.price = price; }  public void setpubdate(String pubdate) {  this.pubdate = pubdate; }  public XmlBean() { }  /**  * 读取XML文件所有信息  */ public Vector LoadXML(String path) throws Exception {  Vector xmlVector = null;  FileInputStream fi = null;  try {   fi = new FileInputStream(path);   xmlVector = new Vector();   SAXBuilder sb = new SAXBuilder();   Document doc = sb.build(fi);   Element root = doc.getRootElement(); // 得到根元素   List books = root.getChildren(); // 得到根元素所有子元素的集合   Element book = null;   XmlBean xml = null;   for (int i = 0; i < books.size(); i++) {    xml = new XmlBean();    book = (Element) books.get(i); // 得到第一本书元素    xml.setbookname(book.getChild("书名").getText());    xml.setauthor(book.getChild("作者").getText());    xml.setpub(book.getChild("出版社").getText());    xml.setprice(book.getChild("价格").getText());    xml.setpubdate(book.getChild("出版日期").getText());    xmlVector.add(xml);   }  } catch (Exception e) {   System.err.println(e + "error");  } finally {   try {    fi.close();   } catch (Exception e) {    e.printStackTrace();   }  }  return xmlVector; }  /**  * 删除XML文件指定信息  */ public static void DelXML(String path,String pbookname) throws Exception {  FileInputStream fi = null;  FileOutputStream fo = null;  try {   XmlBean bean=new XmlBean();   int xmlid=bean.FindXml(path,pbookname);    fi = new FileInputStream(path);   SAXBuilder sb = new SAXBuilder();   Document doc = sb.build(fi);   Element root = doc.getRootElement(); // 得到根元素   List books = root.getChildren(); // 得到根元素所有子元素的集合   books.remove(xmlid);// 删除指定位置的子元素   XMLOutputter outp = new XMLOutputter();   fo = new FileOutputStream(path);   outp.output(doc, fo);  } catch (Exception e) {   System.err.println("查无此书,故不能完成删除");  } finally {   try {    fi.close();    fo.close();   } catch (Exception e) {    System.err.println("查无此书,故不能删除");   }  } }  /**  * 添加XML文件指定信息  */ public static void AddXML(String path,XmlBean xml) throws Exception {  FileInputStream fi = null;  FileOutputStream fo = null;  try {      fi = new FileInputStream(path);   SAXBuilder sb = new SAXBuilder();   Document doc = sb.build(fi);   Element root = doc.getRootElement(); // 得到根元素   List books = root.getChildren(); // 得到根元素所有子元素的集合   String bookname = xml.getbookname();   String author = xml.getauthor();   String price = xml.getprice();   String pub = xml.getpub();   String pubdate = xml.getpubdate();      Element newbook = new Element("书");   Element newname = new Element("书名");   newname.setText(bookname);   newbook.addContent(newname);   Element newauthor = new Element("作者");   newauthor.setText(author);   newbook.addContent(newauthor);   Element newpub = new Element("出版社");   newpub.setText(pub);   newbook.addContent(newpub);   Element newprice = new Element("价格");   newprice.setText(price);   newbook.addContent(newprice);   Element newdate = new Element("出版日期");   newdate.setText(pubdate);   newbook.addContent(newdate);   books.add(newbook);// 增加子元素        XMLOutputter outp = new XMLOutputter();   fo = new FileOutputStream(path);   outp.output(doc, fo);  } catch (Exception e) {   System.err.println(e + "error");  } finally {   try {    fi.close();    fo.close();   } catch (Exception e) {    e.printStackTrace();   }  } }  /**  * 修改XML文件指定信息,对书名为pbookname,修改为pBean的书对象  */ public static void EditXML(String path,String pbookname,XmlBean pBean) throws Exception {  FileInputStream fi = null;  FileOutputStream fo = null;  try {   XmlBean bean=new XmlBean();   int xmlid=bean.FindXml(path,pbookname);   fi = new FileInputStream(path);   SAXBuilder sb = new SAXBuilder();   Document doc = sb.build(fi);   Element root = doc.getRootElement(); // 得到根元素   List books = root.getChildren(); // 得到根元素所有子元素的集合   Element book = (Element) books.get(xmlid);   String bookname = pBean.getbookname();   String author = pBean.getauthor();   String price = pBean.getprice();   String pub = pBean.getpub();   String pubdate = pBean.getpubdate();      Element newname = book.getChild("书名");   newname.setText(bookname);// 修改书名为新的书名   Element newauthor = book.getChild("作者");   newauthor.setText(author);   Element newpub = book.getChild("出版社");   newpub.setText(pub);   Element newprice = book.getChild("价格");   newprice.setText(price);   Element newdate = book.getChild("出版日期");   newdate.setText(pubdate);   // books.set(xmlid,book);//修改子元素      XMLOutputter outp = new XMLOutputter();   fo = new FileOutputStream(path);   outp.output(doc, fo);  } catch (Exception e) {   System.err.println("查无此书,故不能修改");  } finally {   try {    fi.close();    fo.close();   } catch (Exception e) {    System.err.println("查无此书,故不能修改");   }  } } /**  * 查找XML文件指定信息  */ private int FindXml(String path,String bookname){  XmlBean xml=new XmlBean();  Vector vt=null;  try {   vt=xml.LoadXML(path);  } catch (Exception e) {   // TODO 自动生成 catch 块   e.printStackTrace();  }  int i=0;  for(Iterator it=vt.iterator();it.hasNext();i++){   XmlBean bean=(XmlBean) it.next();   if(bean.getbookname().equals(bookname)){    return i;   }  }  return -1; } public static void main(String[] args){    String path="cn/com/javachen/myxml/example.xml";  //读出xml..........................  XmlBean xml=new XmlBean();  Vector vt=null;  try {   vt=xml.LoadXML(path);  } catch (Exception e) {   // TODO 自动生成 catch 块   e.printStackTrace();  }  for(int i=0;i<vt.size();i++){   xml=(XmlBean)vt.elementAt(i);   System.out.println("书名:"+xml.getbookname());   System.out.println("作者:"+xml.getauthor());   System.out.println("出版社:"+xml.getpub());   System.out.println("价格:"+xml.getprice());   System.out.println("出版日期:"+xml.getpubdate());   System.out.println("....................");  }  //.................................  //加入一本书 .......................   XmlBean xmlAdd=new XmlBean();  xmlAdd.setbookname("精通JDOM");  xmlAdd.setauthor("陈勇");  xmlAdd.setpub("江南大学出版社");  xmlAdd.setprice("1角");  xmlAdd.setpubdate("2006-5-28");  try {   XmlBean.AddXML(path,xmlAdd);  } catch (Exception e) {   // TODO 自动生成 catch 块   e.printStackTrace();  }  //.................................  //修改一本书的内容..................  XmlBean xmlMod=new XmlBean();  xmlMod.setbookname("精通JDOM");  xmlMod.setauthor("陈勇与陈浩");  xmlMod.setpub("江南大学出版社");  xmlMod.setprice("2角");  xmlMod.setpubdate("2006-5-29");  try {   XmlBean.EditXML(path,xmlMod.getbookname(),xmlMod);  } catch (Exception e) {   // TODO 自动生成 catch 块,java.lang.NullPointerException   //FindXml(String path,String bookname)方法返回为-1时,对超界没作处理   System.err.println("查无此书,故不能修改");  }  //根据书名删除一本书的内容  String pBookName="精通JDOM";  try {   XmlBean.DelXML(path,pBookName);  } catch (Exception e) {   // TODO 自动生成 catch 块   System.err.println("查无此书,故不能删除");  } }}//下面为example.xml的原始内容: <?xml version="1.0" encoding="UTF-8"?><书库>  <书>    <书名>Java编程入门</书名>    <作者>张三</作者>    <出版社>电子出版社</出版社>    <价格>35.0</价格>    <出版日期>2002-10-07</出版日期>  </书>  <书>    <书名>XML在Java中的应用</书名>    <作者>李四</作者>    <出版社>希望出版社</出版社>    <价格>92.0</价格>    <出版日期>2002-10-07</出版日期>  </书>  </书库> //以上程序怎么用,可以看我写的main()方法内的试例代码 原文章是对JSP的应用,很不错。 出自http://www.jspcn.net/htmlnews/200120272.html 呵呵,里面的作者是unkown,这次可不是了,如果对有帮助请到此顶顶我的blog.


阅读全文(1905) | 回复(0) | 编辑 | 精华
 



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



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

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