您的位置:首页 > 其它

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

2012-06-28 14:30 381 查看

jdom.jar 下载地址 http://download.csdn.net/detail/maxuyang1987/4398947



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 books.test;
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:\\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 books.test;

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: