jdomxml:JDOM操作XML

一、配置环境

在http://www.jdom.org 下载jdom-X.X.zip包(目前最新的为jdom-1.1.zip),解压后进入build文件夹将看到一个名为jdom.jar的包,这个就是jdom的类包了,将它加到你的classpath里即可。

二、源代码

package com.xml;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
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.Format;
import org.jdom.output.XMLOutputter;


public class test {
//创建XML
public void BuildXMLDoc() throws IOException, JDOMException {
// 创建根节点 root;
Element root = new Element("list");
// 根节点添加到文档中;
Document Doc = new Document(root);
// 此处 for 循环可替换成 遍历 数据库表的结果集操作;
for (int i = 0; i < 3; i++) {
// 创建节点 user;
Element elements = new Element("user");
// 给 user 节点添加属性 id;
elements.setAttribute("id", "" + i);
// 给 user 节点添加子节点并赋值;
elements.addContent(new Element("name").setText("潘永刚"));
elements.addContent(new Element("age").setText("28"));
elements.addContent(new Element("email").setText("[email protected]"));

// 给父节点list添加user子节点;
root.addContent(elements);
}
//定义输出
XMLOutputter XMLOut = new XMLOutputter();
//设置格式
Format format = Format.getPrettyFormat();
format.setEncoding("gb2312"); //设置xml文件的字符为gb2312
format.setIndent(" "); //设置xml文件的缩进为4个空格

XMLOut.setFormat(format);
// 输出 user.xml 文件;
XMLOut.output(Doc, new FileOutputStream("user.xml"));
}

@SuppressWarnings("unchecked")
//读XML节点数据
public void ReadXMLDoc() throws IOException, JDOMException {
/*************将user.xml个别节点读出显示*****************/
File fn = new File("user.xml");
Document doc = null;
//建立构造器
SAXBuilder sb = new SAXBuilder();
//判断文件是否存在
if (fn.exists()) {
try {
//读入指定文件
doc = sb.build(new FileInputStream("user.xml"));
} catch (Exception e) {
System.out.println(e.getMessage());
}
//获得根结点
Element root = doc.getRootElement();
//将根结点下的所有子节点放入List中
List list = root.getChildren();

for (int i = 0; i < list.size(); i++) {
System.out.println("-----------------------");
//取得节点实例
Element item = (Element)list.get(i);
//取得当前节点的子节点
String sid = item.getAttribute("id").getValue();//取得属性值
System.out.println("id----> " + sid);

Element Name = item.getChild("name");
String sname = Name.getText();// 取得当前节点的值
System.out.println("Name---->" + sname);
}
} else {
System.out.println("Not found child element!");
}


/* 将user.xml内容在控制台显示
//建立构造器
SAXBuilder builder = new SAXBuilder();
Document doc = null;
//读入指定文件
doc = builder.build(new FileInputStream("user.xml"));
XMLOutputter fmt = new XMLOutputter();
Format format = Format.getPrettyFormat();
format.setEncoding("gb2312"); //设置xml文件的字符为gb2312
format.setIndent(" "); //设置xml文件的缩进为4个空格
fmt.setFormat(format);
PrintWriter out=new PrintWriter(System.out); //不加 中文会乱码
fmt.output(doc, out);*/

}

@SuppressWarnings("unchecked")
//在XML文件尾部追加
public void AddXMLDoc() throws IOException, JDOMException {
File fn = new File("user.xml");
Document doc = null;
SAXBuilder sb = new SAXBuilder();
//如果文件存在
if(fn.exists()){
try{
doc = sb.build(new FileInputStream("user.xml"));
}catch(Exception e){
System.out.println(e.getMessage());
}

Element root = doc.getRootElement();
if (root.getContentSize() > 0) {
List list = root.getChildren();
Element elements = new Element("user");
// 给 user 节点添加属性 id;
elements.setAttribute("id", "" + list.size());
elements.addContent(new Element("name").setText("刘德华"));
elements.addContent(new Element("age").setText("48"));
elements.addContent(new Element("email").setText("[email protected]"));

// 给父节点list添加user子节点;
root.addContent(elements);
// 设置输出格式
Format f = Format.getPrettyFormat();
f.setIndent(" ");
f.setEncoding("gb2312");
XMLOutputter output = new XMLOutputter(f);
try {
output.output(doc, new FileOutputStream("user.xml"));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
//如果文件不存在
else {
System.out.println("Not found child element!");
}

}
else
{
System.out.println("找不到指定的文件!");
}
}

/**
* @param args
*/
public static void main(String[] args) {
try {
test j2x = new test();
//j2x.BuildXMLDoc(); //创建
//j2x.AddXMLDoc(); //追加
j2x.ReadXMLDoc();//读取
} catch (Exception e) {
e.printStackTrace();
}

}

}

三、XML文件操作结果

1、创建的user.xml

<?xml version="1.0" encoding="gb2312"?>
<list>
<user id="0">
<name>潘永刚</name>
<age>28</age>
<email>[email protected]</email>
</user>
<user id="1">
<name>潘永刚</name>
<age>28</age>
<email>[email protected]</email>
</user>
<user id="2">
<name>潘永刚</name>
<age>28</age>
<email>[email protected]</email>
</user>
</list>

2追加后的user.xml

<?xml version="1.0" encoding="gb2312"?>
<list>
<user id="0">
<name>潘永刚</name>
<age>28</age>
<email>[email protected]</email>
</user>
<user id="1">
<name>潘永刚</name>
<age>28</age>
<email>[email protected]</email>
</user>
<user id="2">
<name>潘永刚</name>
<age>28</age>
<email>[email protected]</email>
</user>
<user id="3">
<name>刘德华</name>
<age>48</age>
<email>[email protected]</email>
</user>
</list>
3、查询在控制台显示的结果

-----------------------
id----> 0
Name---->潘永刚
-----------------------
id----> 1
Name---->潘永刚
-----------------------
id----> 2
Name---->潘永刚
-----------------------
id----> 3
Name---->刘德华

Tags:  jdomxml数据库 jdom读取xml jdom生成xml jdomxml

延伸阅读

最新评论

发表评论