| « | Mar.2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | |
| 公告 |
| 暂无公告... |
| 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. |
|
|