【java开发系列】— JDOM创建、修改、删除、读取XML文件

有很多中操作XML文件的方法,这里介绍一下JDOM的使用方法和技巧。

JDOM下载地址

创建XML文档

XML文件是一种典型的树形文件,每个文档元素都是一个document元素的子节点。而每个子元素都是一个Element对象,对象可以向下包含。

1 因此我们可以通过先创建元素再将元素添加到父元素中,最后将顶层元素添加到根元素中。

2 创建完文档元素后,就可以把元素添加到document对象中,然后写入文件。

主要使用的函数:

Element.setAttribute 为元素添加信息

Element.addContent(String,String) 为元素添加子元素内容,也可以直接添加另一个元素节点

Document.setRootElement(Element) 为文档添加根元素

XMLOutputter.output(Document,FileWriter) 将Docuemnt写入到FileWriter文件流中

下面是主要的操作过程,写入文件的过程放到了saveXML中

 1     @SuppressWarnings("null")
 2     public static void createXML() {
 3         // 创建document
 4         Document mydoc = new Document();
 5 
 6         // 创建元素person1
 7         Element person1 = new Element("person");
 8         person1.setAttribute("id", "ID001");
 9         // 添加注释
10         person1.addContent(new Comment("this is person1"));
11 
12         person1.addContent(new Element("name").setText("xingoo"));
13         person1.addContent(new Element("age").setText("25"));
14         person1.addContent(new Element("sex").setText("M"));
15         // 可以嵌套添加子元素
16         Element address1 = new Element("address");
17         address1.setAttribute("zone", "province");
18         address1.addContent("LiaoNing");
19         person1.addContent(address1);
20 
21         // 创建元素person2
22         Element person2 = new Element("person");
23         person2.setAttribute("id", "ID002");
24         // 添加注释
25         person2.addContent(new Comment("this is person2"));
26 
27         person2.addContent(new Element("name").setText("xhalo"));
28         person2.addContent(new Element("age").setText("26"));
29         person2.addContent(new Element("sex").setText("M"));
30         // 可以嵌套添加子元素
31         Element address2 = new Element("address");
32         address2.setAttribute("zone", "province");
33         address2.addContent("JiLin");
34         person2.addContent(address2);
35 
36         // 在doc中添加元素Person
37         Element info = new Element("information");
38         info.addContent(person1);
39         info.addContent(person2);
40         mydoc.setRootElement(info);
41         
42         saveXML(mydoc);
43     }

saveXML()代码:

 1     public static void saveXML(Document doc) {
 2         // 将doc对象输出到文件
 3         try {
 4             // 创建xml文件输出流
 5             XMLOutputter xmlopt = new XMLOutputter();
 6 
 7             // 创建文件输出流
 8             FileWriter writer = new FileWriter("person.xml");
 9 
10             // 指定文档格式
11             Format fm = Format.getPrettyFormat();
12             // fm.setEncoding("GB2312");
13             xmlopt.setFormat(fm);
14 
15             // 将doc写入到指定的文件中
16             xmlopt.output(doc, writer);
17             writer.close();
18         } catch (Exception e) {
19             e.printStackTrace();
20         }
21     }

执行后,刷新项目,就可以在项目下看到person.xml文件了。


读取XML文档

读取文档,首先需要一个xml的解析器,它可以自动的解析出各个元素,并且把子元素作为自己的孩子节点,方便操作。

主要使用的函数:

SAXBuilder.build("xxx.xml") 解析XML文档

Document.getRootElement() 获取根元素

Element.getChildren() 获取根元素下的子元素,返回List<Element>

Element.getAttributeValue(String) 获取指定元素的信息

Element.getChildText 获取指定元素的内容
 1     public static void readXML() {
 2         // 使用SAXBuilder解析器解析xml文件
 3         SAXBuilder sb = new SAXBuilder();
 4         Document doc = null;
 5         try {
 6             doc = sb.build("person.xml");
 7             Element root = doc.getRootElement();
 8             List<Element> list = root.getChildren("person");
 9             for (Element el : list) {
10                 String id = el.getAttributeValue("id");
11                 String name = el.getChildText("name");
12                 String age = el.getChildText("age");
13                 String sex = el.getChildText("sex");
14                 System.out.println("id:" + id);
15                 System.out.println("name:" + name);
16                 System.out.println("age:" + age);
17                 System.out.println("sex:" + sex);
18                 System.out.println("--------------------------");
19             }
20         } catch (Exception e) {
21             e.printStackTrace();
22         }
23     }

修改XML文档

修改XML文档,也是先利用解析器找到指定的元素,使用 setText 或者setAttributeValue 来修改元素内容

修改后记得要保存到文件中,即在此调用saveXML()

 1     public static void updateXML(){
 2         SAXBuilder sb = new SAXBuilder();
 3         Document doc = null;
 4         try {
 5             doc = sb.build("person.xml");
 6             Element root = doc.getRootElement();
 7             List<Element> list = root.getChildren("person");
 8             for (Element el : list) {
 9                 if (el.getAttributeValue("id").equals("ID001")) {
10                     Element name = el.getChild("name");
11                     name.setText("xingoo---update");
12                 }
13             }
14         } catch (Exception e) {
15             e.printStackTrace();
16         }
17         saveXML(doc);
18     }

删除XML文档元素

删除操作类似修改,调用 removeCotent 就可以根据内容删除指定的元素了。但是要用他的父节点调用。最后也需要保存到文件中才可以。

 1     public static void removeXML() {
 2         SAXBuilder sb = new SAXBuilder();
 3         Document doc = null;
 4         try {
 5             doc = sb.build("person.xml");
 6             Element root = doc.getRootElement();
 7             List<Element> list = root.getChildren("person");
 8             for (Element el : list) {
 9                 if (el.getAttributeValue("id").equals("ID001")) {
10                     root.removeContent(el);
11                 }
12             }
13         } catch (Exception e) {
14             e.printStackTrace();
15         }
16         saveXML(doc);
17     }
一、JDOM 简介 JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。 JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念以及映射),把SAX和DOM的功能有效地结合起来。 在使用设计上尽可能地隐藏原来使用XML过程的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。 JDOM 在2000年的春天被Brett McLaughlin和Jason Hunter开发出来,以弥补DOM及SAX在实际应用当的不足之处。 这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能,而对于DOM来说,JAVA程序员在使用时来用起来总觉得不太方便。 DOM的缺点主要是来自于由于Dom是一个接口定义语言(IDL),它的任务是在不同语言实现的一个最低的通用标准,并不是为JAVA特别设计的。JDOM的最新版本为JDOM Beta 9。最近JDOM被收录到JSR-102内,这标志着JDOM成为了JAVA平台组成的一部分。 二、JDOM 包概览 JDOM是由以下几个包组成的 org.jdom 包含了所有的xml文档要素的java类 org.jdom.adapters 包含了与dom适配的java类 org.jdom.filter 包含了xml文档的过滤器类 org.jdom.input 包含了读取xml文档的类 org.jdom.output 包含了写入xml文档的类 org.jdom.transform 包含了将jdom xml文档接口转换为其他xml文档接口 org.jdom.xpath 包含了对xml文档xpath操作的类三、JDOM 类说明 1、org.JDOM这个包里的类是你J解析xml文件后所要用到的所有数据类型。 Attribute CDATA Coment DocType Document Element EntityRef Namespace ProscessingInstruction Text 2、org.JDOM.transform在涉及xslt格式转换时应使用下面的2个类 JDOMSource JDOMResult org.JDOM.input 3、输入类,一般用于文档的创建工作 SAXBuilder DOMBuilder ResultSetBuilder org.JDOM.output 4、输出类,用于文档转换输出 XMLOutputter SAXOutputter DomOutputter JTreeOutputter 使用前注意事项: .........
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐刘根

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值