返回顶部
首页 > 资讯 > 精选 >Java + XML = JDOM
  • 760
分享到

Java + XML = JDOM

2023-06-03 07:06:08 760人浏览 独家记忆
摘要

这就是JDOM设计者的目标。如果你曾经使用过烦人的SAX或是DOM来处理XML,你就会知道为 什么要有JDOM或者是JAXB。在今年(2002)的JavaOne会议上JDOM的主要创始人Jason Hunter有一篇精彩的演讲介绍了 JDO

这就是JDOM设计者的目标。如果你曾经使用过烦人的SAX或是DOM来处理XML,你就会知道为 什么要有JDOM或者是JAXB。在今年(2002)的JavaOne会议上JDOM的主要创始人Jason Hunter有一篇精彩的演讲介绍了 JDOM技术,题目就是JDOM Makes XML Easy。
获得并安装JDOM
Http://jdom.org可 以下载JDOM的最新版本。以JDOM beta8的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或DOM Level 2。于是导致了上面的错误。

一个简单的例子
JDOM的处理方式有些类似于DOM,但它主要是用SAX实现的,你不必担心处理速度和内存的问题。另外,JDOM中几乎没有接口,的类全部是实实在在的类,没有类工厂类的。

下面是实例用的XML文件:


<书库>
<书>
<书名>Java编程入门
<作者>张三
<出版社>电子出版社
<价格>35.0
<出版日期>2002-10-07

<书>
<书名>XML在Java中的应用
<作者>李四
<出版社>希望出版社
<价格>92.0
<出版日期>2002-10-07

下面是操作XML文件的Bean:
package xml;

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(){}

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;ixml = 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;
}

public static void DelXML(httpservletRequest request)throws Exception{
FileInputStream fi = null;
FileOutputStream fo = null;
try{
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");
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();
}
}
}

public static void AddXML(HttpServletRequest request)throws Exception{
FileInputStream fi = null;
FileOutputStream fo = null;
try{
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");
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();
}
}
}

public static void EditXML(HttpServletRequest request)throws Exception{
FileInputStream fi = null;
FileOutputStream fo = null;
try{
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");
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文件:
<%@ page contentType="text/html;charset=GBK" %>
<%@ page language="java" import="java.util.*,xml.*"%>


读取XML文件资料


JDOM操作XML文件


读取XML文件中的所有资料












书名作者出版社价格出版日期操作

<%
String path = application.getRealPath("/test/xml/")+"testC.xml";
XmlBean xml=new XmlBean();
Vector xmlall=xml.LoadXML(path);
for(int i=0;ixml=(XmlBean)xmlall.elementAt(i );

%>







< td align="center" width="94">&path=<%=path%>">删除

<%=xml.getbookname()%><%=xml.getauthor()%><%=xml.getpub()%><%=xml.getprice()%><%=xml.getpubdate()%>

<%}%>



value="add" checked name="act">添加资料 value="edit" name="act">编辑资料
序 号:

书 名:

作 者:

出版社:

价 格:

日 期:


value="<%=path%>">
< p align="center">value="提交" name="B1">< input type="reset" value="重置" name="B2">




下面是处理上一文件提交的jsp文件:
<%@ page contentType="text/html;charset=GBK" %>
<%@ page language="java" import="xml.*"%>
<%if(request.getParameter("act")!=null && request.getParameter("act").equals("add")){
XmlBean.AddXML(request);
out.println("



添加成功

返回");
}
else if(request.getParameter("act")!=null && request.getParameter("act").equals("del")){
XmlBean.DelXML(request);
out.println("



删除成功

返回");
}
else if(request.getParameter("act")!=null && request.getParameter("act").equals("edit")){
XmlBean.EditXML(request);
out.println("



修改成功

返回");
}
else{out.print("



非法操作

返回");}

[@more@]

--结束END--

本文标题: Java + XML = JDOM

本文链接: https://lsjlt.com/news/233418.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java + XML = JDOM
    这就是JDOM设计者的目标。如果你曾经使用过烦人的SAX或是DOM来处理XML,你就会知道为 什么要有JDOM或者是JAXB。在今年(2002)的JavaOne会议上JDOM的主要创始人Jason Hunter有一篇精彩的演讲介绍了 JDO...
    99+
    2023-06-03
  • 怎么用JDOM完成Java更新XML文件
    本篇内容主要讲解“怎么用JDOM完成Java更新XML文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JDOM完成Java更新XML文件”吧!JDOM(Java Documen...
    99+
    2023-06-17
  • 如何利用Jdom读取xml
    本篇内容介绍了“如何利用Jdom读取xml”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!新建 contents.xml   &nb...
    99+
    2023-06-03
  • JDom如何新建和读取xml
    这篇文章主要介绍“JDom如何新建和读取xml”,在日常操作中,相信很多人在JDom如何新建和读取xml问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JDom如何新建和读取xml”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-03
  • Java中JDom解析XML_动力节点Java学院整理
    一、前言    JDOM是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初,JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Ja...
    99+
    2023-05-31
    jdom 解析 xml
  • java解析XML详解
    目录XML的主要用途对比HTML关于XML文件的解析?JDK自带的一套解析总结XML的主要用途 --数据存储和数据描述 --是一个优良的配置文件 --相当于...
    99+
    2024-04-02
  • java怎么解析XML
    本篇内容主要讲解“java怎么解析XML”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java怎么解析XML”吧!目录XML的主要用途对比HTML关于XML文件的解析?JDK自带的一套解析XML...
    99+
    2023-06-20
  • java怎么根据xml模板生成xml文件
    在Java中,可以使用DOM(Document Object Model)或者JAXB(Java Architecture for ...
    99+
    2024-03-07
    java
  • Java中解析XML文件
    1.初识XML 1.1 定义         XML(EXtensible Markup Language),可扩展标记语言,相比于HTML可以自定义标签,不遵循W3C标准         XML特点:跨平台、跨语言、跨系统。XML与操作系...
    99+
    2023-09-23
    xml
  • java怎么解析xml报文
    Java提供了多种解析XML报文的方式,常用的方式有DOM解析、SAX解析和StAX解析。1. DOM解析:DOM解析是将整个XML...
    99+
    2023-09-29
    java xml
  • Java怎么将HTML转为XML
    本文小编为大家详细介绍“Java怎么将HTML转为XML”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java怎么将HTML转为XML”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。【关于如何导入jar包】通过M...
    99+
    2023-07-02
  • java怎么读取xml文件
    在Java中,可以使用Java内置的XML解析器来读取XML文件。下面是一个简单的示例: import javax.xml.pars...
    99+
    2023-10-23
    java
  • Java怎么读写XML文件
    本篇内容介绍了“Java怎么读写XML文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!import java.util.*;import ...
    99+
    2023-06-03
  • Java XML编程实例解析
    笔者通过一个简单的XML文件读写来作简要分析。可以在任何文本编辑器中先建立如下结构的XML文件,类似于HTML结构,但XML语义比较严格,起始标记必须配对,比如"〈学生花名册〉"与"〈/学生花名册〉"对应,空格多少可不必在意,但一般都以缩格...
    99+
    2023-06-03
  • java如何检查XML元素
    我想检查什么都写在我的XML元素 例如:<Blacklist> <entries> <entry>.bat </entry> <entry>...
    99+
    2023-06-02
  • 解锁 XML 数据的潜力:Java 中的 XML 处理教程
    解析 XML 解析 XML 数据涉及将 XML 文档转换为 Java 对象。Java 中最常用的 XML 解析器是 Java API for XML Parsing (JAXP),它提供了 DocumentBuilderFactory ...
    99+
    2024-03-07
    XML、Java、解析、处理、生成
  • java+jquery如何处理xml数据
    这篇文章主要讲解了“java+jquery如何处理xml数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java+jquery如何处理xml数据”吧! AjaxJqueryXml.js如下...
    99+
    2023-06-08
  • Java解析XML的四种方式
    xml文件 <?xml version="1.0" encoding="utf-8" ?> <class> <studen...
    99+
    2024-04-02
  • java如何实现XML schema验证
    这篇文章主要介绍java如何实现XML schema验证,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代码如下:所需JAR包需要自己下载(版本一定要正确)public class SchemaValidation {...
    99+
    2023-06-03
  • Java读写XML文件例子2
    import java.util.*;import javax.xml.parsers.*;import org.w3c.dom.*;import java.io.*;import org.apache.crimson.tree.XmlDo...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作