首先是个xml文件
xml 代码
- <!---->xml version='1.0' encoding='utf-8'?>
- <书库>
- <书>
- <书名>Java编程入门书名>
- <作者>张三作者>
- <出版社>电子出版社出版社>
- <价格>35.0价格>
- <出版日期>2002-10-07出版日期>
- 书>
- <书>
- <书名>XML在Java中的应用书名>
- <作者>李四作者>
- <出版社>希望出版社出版社>
- <价格>92.0价格>
- <出版日期>2002-10-07出版日期>
- 书>
- 书库>
接下来是类
java 代码
- package jdom.test;
- public class Book
- {
- private String bookname, author, pub, price, pubdate;
- public Book(){}
- public Book(String bookname, String author, String pub, String price, String pubdate)
- {
- this.bookname = bookname;
- this.author = author;
- this.pub = pub;
- this.price = price;
- this.pubdate = pubdate;
- }
- public String getAuthor()
- {
- return author;
- }
- public void setAuthor(String author)
- {
- this.author = author;
- }
- public String getBookname()
- {
- return bookname;
- }
- public void setBookname(String bookname)
- {
- this.bookname = bookname;
- }
- public String getPrice()
- {
- return price;
- }
- public void setPrice(String price)
- {
- this.price = price;
- }
- public String getPub()
- {
- return pub;
- }
- public void setPub(String pub)
- {
- this.pub = pub;
- }
- public String getPubdate()
- {
- return pubdate;
- }
- public void setPubdate(String pubdate)
- {
- this.pubdate = pubdate;
- }
- }
然后是对这个类访问
java 代码
- package jdom.test;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.util.List;
- import java.util.Vector;
- import org.jdom.Document;
- import org.jdom.Element;
- import org.jdom.JDOMException;
- import org.jdom.input.SAXBuilder;
- import org.jdom.output.Format;
- import org.jdom.output.XMLOutputter;
- public class XmlBean
- {
- Document doc;
- Book book;
- public XmlBean(String path, Book book)
- {
- getDocument(path);
- this.book = book;
- }
- public XmlBean(String path)
- {
- getDocument(path);
- book = new Book();
- }
- /**
- * 读取XML文件所有信息
- * @return Vector<book></book>
- */
- public Vector<book></book> LoadXML()
- {
- List books = getList();
- Vector<book></book> vector = new Vector<book></book>();
- for (int i = 0; i < books.size(); i++)
- {
- Book book = new Book();
- Element element = (Element) books.get(i);
- book.setBookname(element.getChild("书名").getText());
- book.setAuthor(element.getChild("作者").getText());
- book.setPub(element.getChild("出版社").getText());
- book.setPrice(element.getChild("价格").getText());
- book.setPubdate(element.getChild("出版日期").getText());
- vector.add(book);
- }
- return vector;
- }
- /**
- * 删除XML文件指定信息
- * @param request
- */
- public void delXML(String path, int index)
- {
- List books = getList();
- books.remove(index);
- docToFile(path);
- }
- /**
- * 向XML文件添加信息
- * @param path
- */
- public void addXML(String path)
- {
- List<element></element> books = getList();
- Element newbook = new Element("书");
- Element newname = new Element("书名");
- newname.setText(book.getBookname());
- newbook.addContent(newname);
- Element newauthor = new Element("作者");
- newauthor.setText(book.getAuthor());
- newbook.addContent(newauthor);
- Element newpub = new Element("出版社");
- newpub.setText(book.getPub());
- newbook.addContent(newpub);
- Element newprice = new Element("价格");
- newprice.setText(book.getPrice());
- newbook.addContent(newprice);
- Element newdate = new Element("出版日期");
- newdate.setText(book.getPubdate());
- newbook.addContent(newdate);
- books.add(newbook);
- docToFile(path);
- }
- /**
- * 修改XML文件指定信息
- * @param request
- */
- public void editXML(String path, int index)
- {
- List books = getList();
- Element element = (Element) books.get(index);
- Element newname = element.getChild("书名");
- newname.setText(book.getBookname());
- Element newauthor = element.getChild("作者");
- newauthor.setText(book.getAuthor());
- Element newpub = element.getChild("出版社");
- newpub.setText(book.getPub());
- Element newprice = element.getChild("价格");
- newprice.setText(book.getPrice());
- Element newdate = element.getChild("出版日期");
- newdate.setText(book.getPubdate());
- docToFile(path);
- }
- /**
- * 写入文件
- * @param path
- */
- void docToFile(String path)
- {
- Format format = Format.getPrettyFormat();
- format.setIndent("");
- format.setEncoding("utf-8");
- XMLOutputter outp = new XMLOutputter(format);
- FileOutputStream fo = null;
- try
- {
- fo = new FileOutputStream(path);
- outp.output(doc, fo);
- }
- catch (FileNotFoundException e)
- {
- e.printStackTrace();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- finally
- {
- close(fo);
- }
- }
- /**
- *
- * @param path
- */
- void getDocument(String path)
- {
- FileInputStream fi = null;
- try
- {
- fi = new FileInputStream(path);
- SAXBuilder sb = new SAXBuilder();
- doc = sb.build(fi);
- }
- catch (FileNotFoundException e)
- {
- e.printStackTrace();
- }
- catch (JDOMException e)
- {
- e.printStackTrace();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- finally
- {
- close(fi);
- }
- }
- /**
- * 得到根元素所有子元素的集合
- * @param path
- * @return
- */
- List<element></element> getList()
- {
- Element root = doc.getRootElement();
- List<element></element> list = root.getChildren();
- return list;
- }
- void close(FileInputStream fi)
- {
- if (fi != null)
- {
- try
- {
- fi.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- fi = null;
- }
- }
- void close(FileOutputStream fo)
- {
- if (fo != null)
- {
- try
- {
- fo.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- fo = null;
- }
- }
- }
再来分别是servlet和filter
java 代码
- package servlet;
- import java.io.IOException;
- import java.io.PrintWriter;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import jdom.test.Book;
- import jdom.test.XmlBean;
- public class XmlServlet extends HttpServlet
- {
- private static final long serialVersionUID = 1L;
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
- {
- doPost(request, response);
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
- {
- PrintWriter out = response.getWriter();
- String result = "";
- String act = request.getParameter("act");
- String path = request.getParameter("path");
- if ("add".equals(act))
- {
- String bookname = request.getParameter("bookname");
- String author = request.getParameter("author");
- String pub = request.getParameter("pub");
- String price = request.getParameter("price");
- String pubdate = request.getParameter("pubdate");
- Book book = new Book(bookname, author, pub, price, pubdate);
- XmlBean xb = new XmlBean(path, book);
- xb.addXML(path);
- result = "添加成功";
- }
- else if ("del".equals(act))
- {
- int id = Integer.parseInt(request.getParameter("id"));
- XmlBean xb = new XmlBean(path);
- xb.delXML(path, id);
- result = "删除成功";
- }
- else if ("edit".equals(act))
- {
- int id = Integer.parseInt(request.getParameter("id"));
- String bookname = request.getParameter("bookname");
- String author = request.getParameter("author");
- String pub = request.getParameter("pub");
- String price = request.getParameter("price");
- String pubdate = request.getParameter("pubdate");
- Book book = new Book(bookname, author, pub, price, pubdate);
- XmlBean xb = new XmlBean(path, book);
- xb.editXML(path, id);
- result = "修改成功";
- }
- else
- {
- result = "非法操作";
- }
- out.print("
" + result + "
}
相关推荐
### 利用 JDOM 操作 XML 文档 #### 一、引言 JDOM(Java Document Object Model)是一种用于处理 XML 数据的 Java 库。它提供了面向对象的 API,允许开发人员以简单直观的方式创建、读取、更新和保存 XML 文档。与 ...
通过JDOM,我们可以直接在内存中操作XML文档,这使得XML数据处理更加便捷。 **XML基础** XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。XML文档...
2. 使用`SAXBuilder`的`build`方法读取XML文件,生成`Document`对象。 3. 通过`Document`对象访问XML结构,如获取根元素、遍历子元素等。 **创建XML文档** 创建XML文档主要涉及以下操作: 1. 创建`Element`对象,...
- **构建解析器:** 首先,我们需要导入必要的JDOM库,并创建一个`SAXBuilder`对象,它是JDOM提供的解析器,用于读取XML文件并构建文档对象。 - **读取XML文件:** 使用`SAXBuilder`的`build`方法加载XML文件内容...
`org.jdom`包包含了表示XML文档及其组件的类,如`Attribute`、`Element`、`Document`等,这些类对应XML文档的各个部分,如属性、元素、文档、注释等,使得Java开发者可以方便地创建和操作XML结构。`org.jdom.input`...
JDOM提供了方便的方式来创建、读取、修改XML文档。本篇文章将深入探讨如何使用JDOM来编写XML文档。 1. **JDOM基本概念** JDOM通过DOM(Document Object Model)模型提供对XML的访问。DOM是一种树型结构,其中XML...
读取XML文件时,使用`DocumentBuilder`的`parse()`方法解析XML文件,得到`Document`对象。然后可以通过`Document`的根元素访问整个XML结构。 ```java File inputFile = new File("person.xml"); DocumentBuilder ...
SAXBuilder适用于大型XML文件,因为它是事件驱动的,内存占用小;DOMBuilder则将整个XML文档加载到内存,适合小型或中型文档。 5. **Document类**:代表整个XML文档,是所有元素的根节点。通过它,你可以获取XML的...
JDOM是一个用于处理XML文档的Java库,它提供了一个基于树型结构的API,使开发人员能够高效地创建、读取、修改和写入XML文档。JDOM的设计目标是成为Java平台上的首选XML处理库,通过提供直观的Java API来简化XML操作...
2. **解析XML文档**:通过`SAXBuilder`读取XML文件并将其转换为`Document`对象。 3. **访问和修改XML结构**:利用`Element`的`getChild`, `addContent`, `detachNode`等方法来遍历、添加或移除XML元素。 4. **序列...
在"java操作xml-jdom.mht"文件中,你可能学习到如何通过JDom解析XML文件,创建XML结构,以及如何读取和修改XML文档中的元素和属性。例如,你可以使用SAXBuilder类来解析XML文件,然后通过Element对象来访问和修改...
DOM允许整个XML文档加载到内存中进行操作,适合小型XML文件;而SAX则是一种事件驱动的解析方式,适用于处理大型XML文件,以节省内存资源。 **Jdom.jar** JDOM是Java DOM实现,它提供了一种更直观、更高效的方式来...
要使用JDOM读取XML文档,首先需要构建一个SAXBuilder实例,然后调用其`build()`方法传入XML文件路径,即可得到一个Document对象: ```java import org.jdom2.input.SAXBuilder; SAXBuilder saxBuilder = new ...
标题与描述概述的知识点主要集中在使用jdom4j库解析并生成XML文件的过程,特别是针对组织结构树的生成。下面将详细阐述此过程中的关键步骤和技术细节。 ### jdom4j解析XML实例详解 #### 生成XML文档 在示例代码中...
4. `org.jdom.input`:包含了读取XML文档的类,如SAXBuilder和DOMBuilder。 5. `org.jdom.output`:包含了写入XML文档的类,如XMLOutputter和SAXOutputter。 6. `org.jdom.transform`:支持XSLT转换,包括JDOMSource...
JDOM可以直接创建XML文档,也可以读取并解析XML文件。与DOM相比,JDOM提供了更加面向Java的对象模型,使用起来更加直观。例如,你可以直接通过元素名获取元素,而不需要遍历整个DOM树。但是,JDOM同样存在内存占用高...
4. `org.jdom.input`:包含读取XML文档的类,如SAXBuilder和DOMBuilder,它们分别用于从SAX事件或DOM模型构建JDOM文档。 5. `org.jdom.output`:提供写入XML文档的类,如XMLOutputter和SAXOutputter,它们负责将...
首先,需要在JSP页面中导入JDOM库,并使用`SAXBuilder`类读取XML文件,构建`Document`对象,表示整个XML文档。 2. **获取XML节点**:通过`Document`对象,我们可以获取XML的根元素,并进一步遍历和获取子元素。例如...
1. **解析XML文档**:使用`SAXBuilder`类可以从XML文件或输入流构建一个`Document`对象。例如: ```java SAXBuilder builder = new SAXBuilder(); File inputFile = new File("example.xml"); Document document...
JDOM1.1版本是在其早期版本的基础上进行了优化和增强,提供了更稳定、更安全的XML操作体验。 **JDOM的主要特点:** 1. **全Java实现**:JDOM完全用Java编写,无需依赖其他非Java的XML解析库,如DOM或SAX,这使得...