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

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

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

转载地址:http://ccsdx.baihongyu.com/

你可能感兴趣的文章
Event事件的兼容性(转)
查看>>
我的2014-相对奢侈的生活
查看>>
zoj 2412 dfs 求连通分量的个数
查看>>
Java设计模式
查看>>
一文读懂 AOP | 你想要的最全面 AOP 方法探讨
查看>>
Spring Cloud 微服务分布式链路跟踪 Sleuth 与 Zipkin
查看>>
ORM数据库框架 SQLite 常用数据库框架比较 MD
查看>>
华为OJ 名字美丽度
查看>>
微信公众号与APP微信第三方登录账号打通
查看>>
onchange()事件的应用
查看>>
Windows 下最佳的 C++ 开发的 IDE 是什么?
查看>>
软件工程师成长为架构师必备的十项技能
查看>>
python 异常
查看>>
百度账号注销
查看>>
mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
查看>>
BIEE Demo(RPD创建 + 分析 +仪表盘 )
查看>>
Cocos2dx 3.0开发环境的搭建--Eclipse建立在Android工程
查看>>
基本概念复习
查看>>
重构第10天:提取方法(Extract Method)
查看>>
Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
查看>>