JDOM入门实例:读取与创建xml文档

简介:

1.入门实例一:xml文件的读取与修改

xml文件:library.xml

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book email="abc@163.com">
<name>jdom</name>
<price>60.0</price>
</book>
</books>
复制代码

代码实例:JDomParse.java

复制代码
package edu.sjtu.erplab.jdom;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

//下面是引用到JDOM中的类
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

public class JDomParse {
public JDomParse() {
//定义xml文件路径
String xmlpath = "D:\\Documents\\workspace\\JAVAStudy\\src\\edu\\sjtu\\erplab\\jdom\\library.xml";
SAXBuilder builder = new SAXBuilder(false);
try {
Document doc = builder.build(xmlpath);
// 得到根元素
Element books = doc.getRootElement();
// 得到“books”元素的所在名称为“book”的元素,并把这些元素都放到一个List集合中
List booklist = books.getChildren("book");
/**
* 轮循List集合,方法1:
*/
for (Iterator iter = booklist.iterator(); iter.hasNext();) {
Element book = (Element) iter.next();
String email = book.getAttributeValue("email");// 获取email元素的值
System.out.println(email);
String name = book.getChildTextTrim("name");
System.out.println(name);
// 修改name元素的值,注意的是,必须确定book元素的名为“name”的子元素只有一个。
book.getChild("name").setText("edit-jdom");
}

/**
* 轮循List集合,方法2:
*/
// for (int i = 0; i < booklist.size(); i++) {
// Element book = (Element) booklist.get(i);
// String email = book.getAttributeValue("email");// 获取email元素的值
// System.out.println(email);
// String name = book.getChildTextTrim("name");
// System.out.println(name);
//// 修改name元素的值,注意的是,必须确定book元素的名为“name”的子元素只有一个。
// book.getChild("name").setText("edit-jdom");
// }

// 使用XMLOutputter类,把已经修改了的Document保存进XML文档中。
XMLOutputter outputter = new XMLOutputter();
outputter.output(doc, new FileOutputStream(xmlpath));
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
new JDomParse();
}
}
复制代码

输出结果:

abc@163.com
jdom

这个时候在去查看library.xml会发现它已经变为:

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book email="abc@163.com">
<name>edit-jdom</name>
<price>60.0</price>
</book>
</books>
复制代码

2.入门实例二:XML文件的创建与读取

代码实例:JdomRWXML.java

复制代码
package edu.sjtu.erplab.jdom;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

public class JdomRWXML {

/**
* 创建xml文档
*
@throws IOException
*
@throws JDOMException
*/
public void BuildXMLDoc() throws IOException, JDOMException {
// 创建根节点 list;
Element root = new Element("list");
// 将根节点添加到文档中;
Document Doc = new Document(root);
// 此处 for 循环可替换成 遍历 数据库表的结果集操作;
for (int i = 0; i < 5; i++) {
// 创建新节点 company;
Element elements = new Element("company");
// 给 company 节点添加属性 id;
elements.setAttribute("id", "" + i);
// 给 company 节点添加子节点并赋值
elements.addContent(new Element("company_name").setText("name" + i));
elements.addContent(new Element("company_email").setText("name" + i + "@163.com"));
// 给父节点list添加company子节点;
root.addContent(elements);
}
XMLOutputter XMLOut = new XMLOutputter();
// 输出company_list.xml文件;
XMLOut.output(Doc, new FileOutputStream("company_list.xml"));
}

/**
* 读取xml文档
*
@throws IOException
*
@throws JDOMException
*/
public void ReadXMLDoc() throws IOException, JDOMException {
SAXBuilder sb = new SAXBuilder();// 建立构造器
Document doc = sb.build(new FileInputStream("company_list.xml"));// 读入指定文件
Element root = doc.getRootElement();// 获得根节点
List<?> list = root.getChildren();// 将根节点下的所有子节点放入List中
for (int i = 0; i < list.size(); i++) {
System.out.println("---------------------------");
Element item = (Element) list.get(i);// 取得节点实例
String id = item.getAttribute("id").getValue();// 取得属性值
System.out.println("id-->" + id);

Element sub1 = item.getChild("company_name");// 取得当前节点的字节点
String company_name = sub1.getText();// 取得当前节点的值
System.out.println("company_name-->" + company_name);

Element sub2 = item.getChild("company_email");
String company_email = sub2.getText();
System.out.println("company_email-->" + company_email);
}
}

/**
*
@param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
JdomRWXML jdomRWXML = new JdomRWXML();

System.out.println("--------BuildXMLDoc----------");
jdomRWXML.BuildXMLDoc();

System.out.println("--------ReadXMLDoc----------");
jdomRWXML.ReadXMLDoc();

} catch (Exception e) {
e.printStackTrace();
}
}

}
复制代码

输出结果:

复制代码
--------BuildXMLDoc----------
--------ReadXMLDoc----------
---------------------------
id-->0
company_name-->name0
company_email-->name0@163.com
---------------------------
id-->1
company_name-->name1
company_email-->name1@163.com
---------------------------
id-->2
company_name-->name2
company_email-->name2@163.com
---------------------------
id-->3
company_name-->name3
company_email-->name3@163.com
---------------------------
id-->4
company_name-->name4
company_email-->name4@163.com
复制代码

然后我们在项目根目录下会发现多了一个company_list.xml文件,内容如下:

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<list>
<company id="0">
<company_name>name0</company_name>
<company_email>name0@163.com</company_email>
</company>
<company id="1">
<company_name>name1</company_name>
<company_email>name1@163.com</company_email>
</company>
<company id="2">
<company_name>name2</company_name>
<company_email>name2@163.com</company_email>
</company>
<company id="3">
<company_name>name3</company_name>
<company_email>name3@163.com</company_email>
</company>
<company id="4">
<company_name>name4</company_name>
<company_email>name4@163.com</company_email>
</company>
</list>
复制代码


本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2012/02/21/2361820.html,如需转载请自行联系原作者

目录
相关文章
|
6月前
|
XML Java 数据格式
一.Xml建模之入门
一.Xml建模之入门
37 1
|
10天前
|
XML JavaScript 前端开发
XML文档节点导航与选择指南
XPath是XSLT的核心部分,用于XML文档的节点定位和选择。它采用路径表达式语法,包含200多个内置函数处理各种数据类型。XPath在编程语言如JavaScript中广泛使用,与XSLT配合进行XML转换和样式处理。它涉及7种节点类型,如元素、属性和文本,以及多种节点间关系,如父、子、同级等。XPath还使用轴(如ancestor、child)来描述节点间的关联,并支持运算符进行逻辑和数学操作。
23 0
XML文档节点导航与选择指南
|
1月前
|
XML 存储 BI
如何把一个 ABAP 类的实例,序列化成 XML 字符串试读版
如何把一个 ABAP 类的实例,序列化成 XML 字符串试读版
12 0
|
6月前
|
XML JavaScript 前端开发
SAP UI5 本地开发如何实现 XML 和 JavaScript 代码的自动完成和嵌入式 API 文档自动显示试读版
SAP UI5 本地开发如何实现 XML 和 JavaScript 代码的自动完成和嵌入式 API 文档自动显示试读版
63 0
|
4月前
|
SQL Java 数据库连接
Java【付诸实践 01】使用org.apache.ibatis.plugin.Interceptor拦截器实现全局mapper.xml参数注入(可用于切换数据库实例schema)源码实例分享
Java【付诸实践 01】使用org.apache.ibatis.plugin.Interceptor拦截器实现全局mapper.xml参数注入(可用于切换数据库实例schema)源码实例分享
38 0
|
4月前
|
XML Java 数据库连接
Spring Data JPA入门简解与XML配置实现
Spring Data JPA入门简解与XML配置实现
89 0
|
4月前
|
XML JavaScript API
框架选修课之dom4j解析xml字符串实例
框架选修课之dom4j解析xml字符串实例
45 1
|
6月前
|
XML 设计模式 数据格式
XML基础入门:关于XML建模
XML基础入门:关于XML建模
19 0
|
6月前
|
XML 安全 数据格式
XML基础入门:关于XML解析
XML基础入门:关于XML解析
36 0
|
6月前
|
XML 数据格式
XML基础入门:关于DTD知识点
XML基础入门:关于DTD知识点
34 0