jdom读取解析XML文件
Jdom使用方法

一、JDOM 简介JDOM是一个开源项目,它基于树型结构,利用纯JA V A的技术对XML文档实现解析、生成、序列化以及多种操作。
JDOM 直接为JA V A编程服务。
它利用更为强有力的JA V A语言的诸多特性(方法重载、集合概念以及映射),把SAX和DOM的功能有效地结合起来。
在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。
利用JDOM处理XML文档将是一件轻松、简单的事。
JDOM 在2000年的春天被Brett McLaughlin和Jason Hunter开发出来,以弥补DOM及SAX 在实际应用当中的不足之处。
这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能,而对于DOM来说,JA V A程序员在使用时来用起来总觉得不太方便。
DOM的缺点主要是来自于由于Dom是一个接口定义语言(IDL),它的任务是在不同语言实现中的一个最低的通用标准,并不是为JA V A特别设计的。
JDOM的最新版本为JDOM Beta 9。
最近JDOM被收录到JSR-102内,这标志着JDOM成为了JA V A平台组成的一部分。
二、JDOM 包概览JDOM是由以下几个包组成的org.jdom 包含了所有的xml文档要素的java类org.jdom.adapters 包含了与dom适配的java类org.jdom.filter 包含了xml文档的过滤器类org.jdom.input 包含了读取xml文档的类org.jdom.output 包含了写入xml文档的类org.jdom.transform 包含了将jdom xml文档接口转换为其他xml文档接口org.jdom.xpath 包含了对xml文档xpath操作的类三、JDOM 类说明1、org.JDOM这个包里的类是你J解析xml文件后所要用到的所有数据类型。
AttributeCDA TAComentDocTypeDocumentElementEntityRefNamespaceProscessingInstructionText2、org.JDOM.transform在涉及xslt格式转换时应使用下面的2个类JDOMSourceJDOMResultorg.JDOM.input3、输入类,一般用于文档的创建工作SAXBuilderDOMBuilderResultSetBuilderorg.JDOM.output4、输出类,用于文档转换输出XMLOutputterSAXOutputterDomOutputterJTreeOutputter使用前注意事项:1.JDOM对于JAXP 以及TRax 的支持JDOM 支持JAXP1.1:你可以在程序中使用任何的parser工具类,默认情况下是JAXP的parser。
通过代码实例跟我学Java XML解析及应用——利用JDom读出数据库表数据到XML文件中的应用实例

1.1通过代码实例跟我学Java XML解析及应用——利用JDom读出数据库表数据到XML文件中的应用实例1、添加一个类读出数据库表中的数据(1)类名称为GetDBDataToXML,包名称为com.px1987.webbank.xmlParser(2)编程GetDBDataToXML程序类中的功能实现代码package com.px1987.webbank.xmlParser;import java.io.FileOutputStream;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import org.jdom.Document;import org.jdom.Element;import org.jdom.output.Format;import org.jdom.output.XMLOutputter;import com.px1987.webbank.dao.imple.MySQLConnectDBBean;import com.px1987.webbank.dao.inter.ConnectDBInterface;import com.px1987.webbank.exception.WebBankException;public class GetDBDataToXML {Connection oneConnection=null;ResultSet oneResultSet=null;ResultSetMetaData oneResultSetMetaData=null;public GetDBDataToXML() {}public void connectToDB() throws WebBankException{ConnectDBInterface oneMySQLConnectDBBean=new MySQLConnectDBBean();oneConnection=oneMySQLConnectDBBean.getConnection();}public void queryDBData(String sqlStatement) throws SQLException{PreparedStatement onePreparedStatement=oneConnection.prepareStatement(sqlStatement);oneResultSet=onePreparedStatement.executeQuery();}public Document buildXMLDocument() throws SQLException{Element documentRoot, firstLevelTag,secondLevelTag;Document xmlDocument;xmlDocument=new Document();documentRoot=new Element("账户信息列表");xmlDocument.addContent(documentRoot);oneResultSetMetaData=oneResultSet.getMetaData();int numberOfColumns = oneResultSetMetaData.getColumnCount(); //获取字段数while(oneResultSet.next()){ //根据查询的结果集创建出对应的标签节点对象firstLevelTag=new Element("某个账户信息");documentRoot.addContent(firstLevelTag);for(int index=1; index <=numberOfColumns;index++){secondLevelTag=newElement(oneResultSetMetaData.getColumnName(index));Object oneObject=oneResultSet.getObject(index); //目的是识别某个字段是否为空if(oneObject==null){secondLevelTag.setText("");}else{secondLevelTag.setText(oneResultSet.getObject(index).toString());}firstLevelTag.addContent(secondLevelTag);}}return xmlDocument;}public void outputXMLDocument(Document xmlDocument,String targetFileName)throws IOException{Format xmlDocumentFormat = Format.getPrettyFormat();xmlDocumentFormat.setIndent(" ");xmlDocumentFormat.setEncoding("gb2312");XMLOutputter xmlDocumentOuter = new XMLOutputter(xmlDocumentFormat);// xmlDocumentOuter.output(xmlDocument,System.out);xmlDocumentOuter.output(xmlDocument,new FileOutputStream(targetFileName));}public static void main(String[] args) throws IOException, WebBankException, SQLException {String targetFileName="account.xml";String sqlStatement="select * from account";GetDBDataToXML oneGetDBDataToXML=new GetDBDataToXML();oneGetDBDataToXML.connectToDB();oneGetDBDataToXML.queryDBData(sqlStatement);oneGetDBDataToXML.outputXMLDocument(oneGetDBDataToXML.buildXMLDocument( ),targetFileName);}}3、执行本示例的程序类(1)以控制台方式输出的执行结果(2)以本地文件方式输出的执行结果。
(四)使用JDOM读、写xml文件

(四)使⽤JDOM读、写xml⽂件JDOM=DOM修改⽂件的优点+SAX读取快速的优点// 1.⽣成xml⽂件import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.List;import org.jdom2.Attribute;import org.jdom2.Document;import org.jdom2.Element;import org.jdom2.input.SAXBuilder;import org.jdom2.output.XMLOutputter;public static void main(String[] args) { Element addresslist = new Element("addresslist"); // 定义根节点 Element linkman = new Element("linkman"); // 定义节点名称 Element name = new Element("name"); // 定义节点名称 Element email = new Element("email"); // 定义节点名称 Attribute id = new Attribute("id", "mxzer"); // 定义属性 Document document = new Document(addresslist); // 定义⼀个Document对象 name.setText("mxzer"); // 设置元素内容 email.setText("mxzer3200@"); name.setAttribute(id); // 设置name元素的属性 linkman.addContent(name); // 设置linkman的⼦节点 linkman.addContent(email); addresslist.addContent(linkman); // 将linkman加⼊根节点下 XMLOutputter out = new XMLOutputter(); // 输出xml⽂件 out.setFormat(out.getFormat().setEncoding("GBK")); // 设置输出编码 try { out.output(document, new FileOutputStream("e:" + File.separator+ "jdom2.xml")); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}2.解析xml⽂件/*** 在JDOM中,所有节点都是以集合的形式返回的,集合中的每⼀个对象都是Element实例.** @param args* @throws Exception*/public static void main(String[] args) throws Exception { // 1.建⽴SAX解析 SAXBuilder builder = new SAXBuilder(); // 2.找到Document⽂档 Document dc = builder.build("e:" + File.separator + "jdom2.xml"); // 3.读取根元素 Element stu = dc.getRootElement(); // 得到全部的linkman⼦元素 List list = stu.getChildren("linkman"); for (int x = 0; x < list.size(); x++) { // 输出 Element ele = (Element) list.get(x); // 取出每⼀个⼦元素 String name = ele.getChildText("name"); // 取得name元素的内容 String id = ele.getChild("name").getAttribute("id").getValue(); // 取得name元素的id属性 String email = ele.getChildText("email"); System.out.println("联系⼈信息:"); System.out.println("姓名:" + name + ", id:" + id); System.out.println("邮箱:" + email); System.out.println("------------------------------"); }}。
jdom帮助文档

outputter.output(doc,new FileOutputStream(xmlpath));
我们先要有一个XMLOutputter类,再把已经修改了的Document保存进XML文档中。
org.JDOM.input包中包含SAXBuilder、DOMBuilder、ResultSetBuilder等创建XML文档时需要用到的类。
org.JDOM.output包则主要用于文档转换输出,其中包括XMLOutputter、SAXOutputter、DOMOutputter、JTreeOutputter等类。
Document doc=builder.build(xmlpath);
(3)得到根元素:
Element books=doc.getRootElement();
在JDOM中所有的节点(DOM中的概念)都是一个org.jdom.Element类,当然他的子节点也是一个org.jdom.Element类。
import java.util.List;
//下面是引用到JDOM中的类
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
15 book.getChild("name").setText("alterrjzjh");
16
17 }
18
19 XMLOutputter outputter=new XMLOutputter();
Jdom使用指南

Jdom使用指南941xz 减小字体增大字体对xml文档的解析java中有很多种方法,例如使用dom、sax、jdom等等,相比之下,我觉得还是jdom比较方便。
下面介绍一下jdom的基本使用方法,不对之处还请各位网友之交。
谢谢!最新的jdom可以到他的网站:去下载,现在的版本是1.0版,下载之后将得到jdom-1.0.zip文件,解压后进入build文件夹将看到一个名为jdom.jar的包,这个就是jdom 的类包了,将它加到你的classpath里就可以使用jdom提供的各种处理xml的类和他们的方法了。
应该注意的是在解压后的文件夹里还有一个lib文件夹,里面保存的是使用jdom的环境包,不过我在我的jdk1.4下使用没引用这些包一样好用,不知道是jdk1.4中已经包含了这些东西还是原来我的eclipse已经引用了这些包,呵呵。
好了,书归正传,现在开始介绍jdom包的使用。
jdom包的结构包括:org.jdom 包含了所有的xml文档要素的java类org.jdom.adapters 包含了与dom适配的java类org.jdom.filter 包含了xml文档的过滤器类org.jdom.input 包含了读取xml文档的类org.jdom.output 包含了写入xml文档的雷org.jdom.transform 包含了将jdom xml文档接口转换为其他xml文档接口org.jdom.xpath 包含了对xml文档xpath操作的类下面将通过一个例子介绍jdom的常用操作生成xml文档:下面的类将生成一个xml文档:/** Created on 2004-10-9** 写入xml文件的例子*//*** @author lnman** To change the template for this generated type comment go to* Window>Preferences>Java>Code Generation>Code and Comments*/import java.io.*;import org.jdom.*;import org.jdom.output.*;public class WriteXML{public void BuildXML() throws Exception{Element root,student,number,name,age;root = new Element("student-info"); //生成根元素:student-infostudent = new Element("student"); //生成元素:student,该元素中将包含元素number,name,agenumber = new Element("number");name = new Element("name");age = new Element("age");Document doc = new Document(root); //将根元素植入文档doc中number.setText("001");name.setText("lnman");age.setText("24");student.addContent(number);student.addContent(name);student.addContent(age);root.addContent(student);Format format = Format.getCompactFormat();format.setEncoding("gb2312"); //设置xml文件的字符为gb2312format.setIndent(" "); //设置xml文件的缩进为4个空格XMLOutputter XMLOut = new XMLOutputter(format);//在元素后换行,每一层元素缩排四格XMLOut.output(doc, new FileOutputStream("studentinfo.xml"));}public static void main(String[] args) throws Exception{WriteXML w = new WriteXML();System.out.println("Now we build an XML document .....");w.BuildXML();System.out.println("finished!");}}生成的xml文档为:<?xml version="1.0" encoding="gb2312"?><student-info><student><number>001</number><name>lnman</name><age>24</age></student></student-info>读取xml文档的例子:/** Created on 2004-10-9**用jdom读取xml文档的例子**//*** @author lnman** To change the template for this generated type comment go to* Window>Preferences>Java>Code Generation>Code and Comments */import org.jdom.output.*;import org.jdom.input.*;import org.jdom.*;import java.io.*;import java.util.*;public class ReadXML{public static void main(String[] args) throws Exception{SAXBuilder builder = new SAXBuilder();Document read_doc = builder.build("studentinfo.xml");Element stu = read_doc.getRootElement();List list = stu.getChildren("student");for(int i = 0;i < list.size();i++){Element e = (Element)list.get(i);String str_number = e.getChildText("number");String str_name = e.getChildText("name");String str_age = e.getChildText("age");System.out.println("---------STUDENT--------------");System.out.println("NUMBER:" + str_number);System.out.println("NAME:" + str_name);System.out.println("AGE:" + str_age);System.out.println("------------------------------");System.out.println();}}}Xpath例子:JDOM的关于XPA TH的api在org.jdom.xpath这个包里。
jdom解析xml

jdom解析xml这次把代码整理了⼀下,打包发上来了,程序中需要⽤到的jar包也⼀起打在⾥⾯了,有兴趣的朋友可以解压后直接导⼊的eclipse⾥运⾏! xml是⼀种⼴为使⽤的可扩展标记语⾔,java中解析xml的⽅式有很多,最常⽤的像jdom、dom4j、sax等等。
前两天刚好有个程序需要解析xml,就学了下jdom,写了个⼩例⼦,这⾥做个学习笔记。
要使⽤jdom解析xml⽂件,需要下载jdom的包,我使⽤的是jdom-1.1。
解压之后,将lib⽂件夹下的.jar⽂件以及build⽂件夹下的jdom.jar拷贝到⼯程⽂件夹下,然后就可以使⽤jdom操作xml⽂件了。
⼀、读取xml⽂件假设有这样⼀个xml⽂件:Xml代码1. <?xml version="1.0" encoding="UTF-8"?>2. <sys-config>3. <jdbc-info>4. <driver-class-name>oracle.jdbc.driver.OracleDriver</driver-class-name>5. <url>jdbc:oracle:thin:@localhost:1521:database</url>6. <user-name>why</user-name>7. <password>why</password>8. </jdbc-info>9. <provinces-info>10. <province id="hlj" name="⿊龙江">11. <city id="harb">哈尔滨</city>12. <city id="nj">嫩江</city>13. </province>14. <province id="jl" name="吉林"></province>15. </provinces-info>16. </sys-config>⾸先,⽤ org.jdom.input.SAXBuilder 这个类取得要操作的xml⽂件,会返回⼀个 org.jdom.Document 对象,这⾥需要做⼀下异常处理。
Jdom读取数据库并生成xml文件示例

1.WriteXml.java:代码如下:package .csrc.xml;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Arrays;import java.util.List;import org.jdom2.Document;import org.jdom2.Element;import org.jdom2.output.Format;import org.jdom2.output.XMLOutputter;import .csrc.jdbc.DatabaseConnection;/*** @function 使用Jdom查询数据库把数据写入xml文件中* @author admin**/public class WriteXml {public static void WriterFileToXml(){//创建一个xml文件File file = new File("D://user.xml");//创建数据库连接Connection conn = DatabaseConnection.getConn();String sql = "select * from user";try {Statement st = conn.createStatement();//创建预处理对象ResultSet rs = st.executeQuery(sql);//获得结果集Element root = new Element("users");//创建根元素while (rs.next()) {Element user = new Element("user");//创建子元素root.addContent(user);//添加子元素到根节点Element id = new Element("ID");//创建叶子节点id.setText(rs.getString("ID"));//给叶子节点赋值user.addContent(id);//添加叶子节点到父节点Element ename = new Element("USERNAME");ename.setText(rs.getString("USERNAME"));//给叶子节点赋值user.addContent(ename);Element password = new Element("PASSWORD");//创建叶子节点password.setText(rs.getString("PASSWORD"));//给叶子节点赋值user.addContent(password);//添加叶子节点到父节点Element status = new Element("STATUS");status.setText(rs.getString("STA TUS"));//给叶子节点赋值user.addContent(status);Element descn = new Element("DESCN");descn.setText(rs.getString("DESCN"));//给叶子节点赋值user.addContent(descn);}Document doc = new Document();//创建文本对象doc.addContent(root);//添加树倒文本中Format format= Format.getCompactFormat();format.setIndent(" ");XMLOutputter out = new XMLOutputter(format);//创建输出流FileWriter fw = new FileWriter(file);//写数据out.output(doc, fw);//输出到xml文件中fw.close();//关闭写入流} catch (SQLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {//把数据库的数据写入xml文件中WriteXml.WriterFileToXml();}}2.连接数据库java类:DatabaseConnection.java:代码如下复制代码package .csrc.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/*** 连接数据库** @author admin**/public class DatabaseConnection {private static final String driverName = "com.mysql.jdbc.Driver";private static final String url = "jdbc:mysql://localhost/springdb?autoReconnect=true&useUnicode=true&characterEnc oding=UTF8";private static final String username = "root";private static final String password = "root";static {try {Class.forName(driverName);} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConn() {Connection conn = null;try {conn = DriverManager.getConnection(url, username, password);} catch (SQLException e) {e.printStackTrace();}return conn;}public static void main(String[] args) {Connection conn = getConn();System.out.println(conn);}}更多信息请查看IT技术专栏。
读写XML的四种方法

读写XML的四种方法XML(eXtensible Markup Language)是一种用于表示和传输数据的标记语言。
它具有良好的可读性和扩展性,被广泛应用于Web开发、数据交换和配置文件等领域。
在读写和处理XML数据时,有许多方法可供选择。
本文将介绍四种常见的读写XML的方法:DOM、SAX、JDOM、和XMLStreamReader/XMLStreamWriter。
1. DOM(Document Object Model):DOM是一种基于树形结构的解析器,它将整个XML文档加载到内存中,并将其表示为一个对象树。
在DOM中,每个XML元素都被表示为一个节点(Node),可以通过节点的属性和方法对其进行操作。
读取XML文档时,可以使用DOM解析器将其转换为一个DOM树,然后通过节点的方法访问和修改树结构。
写入XML文档时,可以通过创建和修改节点来构建DOM树,并使用DOM解析器将其保存为XML文档。
使用DOM读取XML文档的基本步骤如下:- 创建一个DocumentBuilderFactory对象。
- 根据DocumentBuilderFactory对象创建一个DocumentBuilder对象。
- 使用DocumentBuilder对象解析XML文档,并返回一个Document对象。
- 通过Document对象的方法遍历和操作XML文档的节点。
使用DOM写入XML文档的基本步骤如下:- 创建一个DocumentBuilderFactory对象。
- 根据DocumentBuilderFactory对象创建一个DocumentBuilder对象。
- 使用DocumentBuilder对象创建一个Document对象。
- 通过Document对象的方法创建和添加元素节点、属性节点等。
- 使用TransformerFactory和Transformer对象将Document对象保存为XML文档。
DOM的优点是易于使用和理解,可以方便地遍历和修改XML文档。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
jdom学习读取XML文件
用JDOM读取XML文件需先用org.jdom.input.SAXBuilder对象的build()方法创建Document对象,然后用Document类、Element类等的方法读取所需的内容。
例如:
<?xml version="1.0" encoding="UTF-8"?>
<HD>
<disk name="C">
<capacity>8G</capacity>
<directories>200</directories>
<files>1580</files>
</disk>
<disk name="D">
<capacity>10G</capacity>
<directories>500</directories>
<files>3000</files>
</disk>
</HD>
则解析类:
import java.util.*;
import org.jdom.*;
import org.jdom.input.SAXBuilder;
publicclass Sample {
publicstaticvoid main(String[] args) throws Exception{
SAXBuildersb=new SAXBuilder();
Document
doc=sb.build(Sample.class.getClassLoader().getResourceAsStream("test. xml")); //构造文档对象
Element root=doc.getRootElement(); //获取根元素
List list=root.getChildren("disk");//取名字为disk的所有元素
for(int i=0;i<list.size();i++){
Element element=(Element)list.get(i);
String name=element.getAttributeValue("name");
String capacity=element.getChildText("capacity");//取disk子元素capacity的内容
String directories=element.getChildText("directories");
String files=element.getChildText("files");
System.out.println("磁盘信息:");
System.out.println("分区盘符:"+name);
System.out.println("分区容量:"+capacity);
System.out.println("目录数:"+directories);
System.out.println("文件数:"+files);
System.out.println("-----------------------------------"); }
}
}
在写类时,会报错一些类找不到,此时需要将jdom.jar包jdom.jar
,导入进去:
导入步骤为:。