JDOM操作XML文件-详细.doc_第1页
JDOM操作XML文件-详细.doc_第2页
JDOM操作XML文件-详细.doc_第3页
JDOM操作XML文件-详细.doc_第4页
JDOM操作XML文件-详细.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JDOM操作XML文件Java+XML=JDOM!这就是JDOM设计者的目标。如果你曾经使用过烦人的SAX或是DOM来处理XML,你就会知道为什么要有JDOM或者是JAXB。在今年(2002)的JavaOne会议上JDOM的主要创始人JasonHunter有一篇精彩的演讲介绍了JDOM技术,题目就是JDOMMakesXMLEasy。获得并安装JDOM在可以下载JDOM的最新版本。以JDOM1.0的2进制版本为例。下载后解压缩,JDOM的jar文件就是build目录下的文件jdom.jar,将之加入类路径。另外JDOM还需要lib目录下那些jar文件如xerces.jar,jaxp.jar的支持。如果在使用中出现以下错误:java.lang.NoSuchMethodError或java.lang.NoClassDefFoundError:org/xml/sax/SAXNotRecognizedException你需要保证xerces.jar文件在CLASSPATH中位于其他XML类,如JAXP或Crimson之前,这些类文件,包括以前老版本的xerces,可能不支持SAX2.0或DOMLevel2。于是导致了上面的错误。一个简单的例子JDOM的处理方式有些类似于DOM,但它主要是用SAX实现的,你不必担心处理速度和内存的问题。另外,JDOM中几乎没有接口,的类全部是实实在在的类,没有类工厂类的。下面是实例用的XML文件: MyXml.xmlJava编程入门张三电子出版社35.02002-10-07XML在Java中的应用李四希望出版社92.02002-10-07 下面是操作XML文件的Bean: XmlBean.javapackage jdom.test;/* XML的读写操作Bean*/import java.io.*;import java.util.*;import org.jdom.*;import org.jdom.output.*;import org.jdom.input.*;import javax.servlet.*;import javax.servlet.http.*;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(HttpServletRequest request) throws Exception FileInputStream fi = null;FileOutputStream fo = null;try request.setCharacterEncoding(GBK);String path = request.getParameter(path);int xmlid = Integer.parseInt(request.getParameter(id);fi = new FileInputStream(path);SAXBuilder sb = new SAXBuilder();Document doc = sb.build(fi);Element root = doc.getRootElement(); / 得到根元素List books = root.getChildren(); / 得到根元素所有子元素的集合books.remove(xmlid);/ 删除指定位置的子元素/String indent = ;/boolean newLines = true;/XMLOutputter outp = new XMLOutputter(indent, newLines, GBK);Format format = Format.getPrettyFormat();format.setIndent();format.setEncoding(utf-8);XMLOutputter outp = new XMLOutputter(format);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文件指定信息*/public static void AddXML(HttpServletRequest request) throws Exception FileInputStream fi = null;FileOutputStream fo = null;try request.setCharacterEncoding(GBK);String path = request.getParameter(path);fi = new FileInputStream(path);SAXBuilder sb = new SAXBuilder();Document doc = sb.build(fi);Element root = doc.getRootElement(); / 得到根元素List books = root.getChildren(); / 得到根元素所有子元素的集合String bookname = request.getParameter(bookname);String author = request.getParameter(author);String price = request.getParameter(price);String pub = request.getParameter(pub);String pubdate = request.getParameter(pubdate);/Text newtext;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);/ 增加子元素/String indent = ;/boolean newLines = true;/XMLOutputter outp = new XMLOutputter(indent, newLines, GBK);Format format = Format.getPrettyFormat();format.setIndent();format.setEncoding(utf-8);XMLOutputter outp = new XMLOutputter(format);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文件指定信息*/public static void EditXML(HttpServletRequest request) throws Exception FileInputStream fi = null;FileOutputStream fo = null;try request.setCharacterEncoding(GBK);String path = request.getParameter(path);int xmlid = Integer.parseInt(request.getParameter(id);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 = request.getParameter(bookname);String author = request.getParameter(author);String price = request.getParameter(price);String pub = request.getParameter(pub);String pubdate = request.getParameter(pubdate);/Text newtext;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);/修改子元素/String indent = ;/boolean newLines = true;/XMLOutputter outp = new XMLOutputter(indent, newLines, GBK);Format format = Format.getPrettyFormat();format.setIndent();format.setEncoding(utf-8);XMLOutputter outp = new XMLOutputter(format);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();下面是操作的jsp文件: test.jsp读取XML文件资料JDOM操作XML文件读取XML文件中的所有资料书名作者出版社价格出版日期操作%String path = application.getRealPath(/JDOM/MyXml.xml);XmlBean xml = new XmlBean();Vector xmlall = xml.LoadXML(path);for (int i = 0; i xmlall.size(); i+) xml = (XmlBean) xmlall.elementAt(i);/*out.println(书名:+xml.getbookname()+);out.println(作者:+xml.getauthor()+);out.println(出版社:+xml.getpub()+);out.println(价格:+xml.getprice()+);out.println(出版日期:+xml.getpubdate()+);*/%ahref=xmlaction.jsp?act=del&id=&path=删除添加

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论