博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDOM入门实例:读取与创建xml文档
阅读量:6978 次
发布时间:2019-06-27

本文共 5884 字,大约阅读时间需要 19 分钟。

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

xml文件:library.xml

jdom
60.0

代码实例: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会发现它已经变为:

edit-jdom
60.0

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文件,内容如下:

name0
name0@163.com
name1
name1@163.com
name2
name2@163.com
name3
name3@163.com
name4
name4@163.com

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

你可能感兴趣的文章
No.2 条件
查看>>
39个超实用jQuery实例应用特效
查看>>
CI报Disallowed Key Characters的解决
查看>>
关于手机已处理里重复单据的处理办法
查看>>
IIS 7.5 + FastCGI + PHP + Drupal 7 + Oracle
查看>>
我的友情链接
查看>>
英文版PDF不能显示中文PDF文件的解决方法
查看>>
linux 内核 出错-HP 方案
查看>>
Linux
查看>>
HashSet的使用
查看>>
WSFC 仲裁模型选择
查看>>
nginx安装 问题 1
查看>>
MST配置详解
查看>>
linux下用phpize给PHP动态添加扩展
查看>>
任意排列、组合终极Shell脚本
查看>>
★核心关注点_《信息系统项目管理师考试考点分析与真题详解》
查看>>
Go处理百万每分钟的请求
查看>>
你以为自己在填验证码,其实你是在给Google义务劳动
查看>>
linux实战考试题:批量创建用户和密码(不能使用循环)
查看>>
一个基于J2EE的web应用程序运行起来需要什么?
查看>>