今天本来打算写Spring温故知新系列的第二篇,不过突然想起一直都忘了学怎么用java来操作XML,这么重要的事情居然拖了这么久才想起来实在是太不应该了,于是今天就先练习一下用dom4j来操作XML。
其实dom4j这个库实在是太方便了,使用起来跟C#操作XML几乎没太大差别,也没什么难度,所以就先贴两段代码吧。
其中有几个要点:
1、如果只是创建一个XML文件,那么只需要导入dom4j-1.6.1.jar就可以了,路径如下:
spring-framework-2.5.6\lib\dom4j\dom4j-1.6.1.jar
如果是需要读取或者修改,那么就需要导入这个库内的另外一个文件:
spring-framework-2.5.6\lib\dom4j\jaxen-1.1-beta-7.jar
否则就会报错,报错内容如下:
java.lang.NoClassDefFoundError: org/jaxen/JaxenException
...
...
... 2、dom4j是支持链式操作的,这跟jQuery非常像。这样一来创建一个XML文件就非常方便而且代码结构看起来也更加清晰明了。
3、要学会XPath.... 要不然你会很痛苦,不过XPath其实很简单,应该花不了多少时间,难不住各位的,哈哈~
Action部分:
- package com.iteye.bolide74.action;
-
- import java.io.File;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.List;
-
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.DocumentHelper;
- import org.dom4j.Element;
- import org.dom4j.Node;
- import org.dom4j.io.SAXReader;
- import org.dom4j.io.XMLWriter;
-
- public class MyDom4j {
-
-
-
- public void createXML(String xmlPath, String msg) throws IOException {
- Document XmlDoc = DocumentHelper.createDocument();
- XmlDoc.addDocType("beans", "-//SPRING//DTD BEAN//EN",
- "http://www.springframework.org/dtd/spring-beans.dtd");
-
- Element beansEle = XmlDoc.addElement("beans");
-
-
- Element beanHelloWorld = beansEle.addElement("bean")
- .addAttribute("id", "HelloWorld")
- .addAttribute("class", "com.iteye.bolide74.action.HelloWorld");
- Element propertyHelloWorld = beanHelloWorld.addElement("property")
- .addAttribute("name", "msg");
- Element valueHelloWorld = propertyHelloWorld.addElement("value")
- .addText(msg);
- XMLWriter outXml = new XMLWriter(new FileWriter(new File(xmlPath)));
- outXml.write(XmlDoc);
- outXml.close();
- }
-
-
-
-
-
- public void editXML(String xmlPath, String msg) throws DocumentException, IOException {
- Document XmlDoc = new SAXReader().read(new File(xmlPath));
- List<Element> xmlList = XmlDoc.selectNodes("/beans/bean");
- System.out.println("\r\n遍历所有的bean获得id和class:");
- for (Element element : xmlList) {
- System.out.println("id:" + element.attributeValue("id")
- + " / class:" + element.attributeValue("class"));
- }
- System.out.println("\r\n动态修改HelloWorld这个bean的msg值:");
-
-
- Node valueHelloWorld = XmlDoc
- .selectSingleNode("/beans/bean[@id='HelloWorld']/property[@name='msg']/value");
- System.out.println("原始值为:" + valueHelloWorld.getText());
- valueHelloWorld.setText(msg);
- System.out.println("修改后的值为:" + valueHelloWorld.getText());
-
- XMLWriter outXml = new XMLWriter(new FileWriter(new File(xmlPath)));
- outXml.write(XmlDoc);
- outXml.close();
- }
- }
- package com.iteye.bolide74.action;
-
- public class HelloWorld {
- public String msg;
-
- public String getMsg() {
- return msg;
- }
-
- public void setMsg(String msg) {
- this.msg = msg;
- }
- }
Tester实现类部分:
- package com.iteye.bolide74.tester;
-
- import java.io.IOException;
-
- import org.dom4j.DocumentException;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.FileSystemXmlApplicationContext;
-
- import com.iteye.bolide74.action.HelloWorld;
- import com.iteye.bolide74.action.MyDom4j;
-
- public class HelloWorldTester {
- public static void main(String[] args) {
- String xmlPath = "/WebContent/WEB-INF/conf/config_dom4j.xml";
- MyDom4j myBeans = new MyDom4j();
- try {
- myBeans.createXML(System.getProperty("user.dir") + xmlPath,
- "Hello,world!this is created by dom4j!");
- } catch (IOException e) {
- e.printStackTrace();
- }
- ApplicationContext ac = new FileSystemXmlApplicationContext(xmlPath);
- HelloWorld helloWorld = (HelloWorld) ac.getBean("HelloWorld");
- System.out.println(helloWorld.getMsg());
- try {
- myBeans.editXML(System.getProperty("user.dir") + xmlPath,
- "Hello,world!this is edited by dom4j!");
- } catch (DocumentException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- ac = new FileSystemXmlApplicationContext(xmlPath);
- helloWorld = (HelloWorld) ac.getBean("HelloWorld");
- System.out.println("\r\n" + helloWorld.getMsg());
- }
- }
输出结果为:
- Hello,world!this is created by dom4j!
-
- 遍历所有的bean获得id和class:
- id:HelloWorld / class:com.iteye.bolide74.action.HelloWorld
-
- 动态修改HelloWorld这个bean的msg值:
- 原始值为:Hello,world!this is created by dom4j!
- 修改后的值为:Hello,world!this is edited by dom4j!
- font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; border-left-width: 1px; border-left-style: solid; border-left-color: #d1d7
分享到:
相关推荐
自己的XML DOM4J学习笔记 自己的XML DOM4J学习笔记
介绍DOM4J的主要接口的使用方法,Elementorg.dom4j.Attribute : Attribute接口定义了XML文件的属性 org.dom4j.Branch:Branch为能够包含子节点的节点如XML元素和文档定义了一个公共为 org.dom4j.CDATA : CDATA定义了...
dom4j-2.1.1.jar和源码source.jar java xml解析第三方包
NULL 博文链接:https://hbiao68.iteye.com/blog/1520723
赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...
赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...
com.springsource.org.dom4j-1.6.1.jar,读取xml所需的jar包
博文链接:https://dingjun1.iteye.com/blog/210165
dom4j的例子,很简单的dom4j.里面有dom4j的配置文件
dom4j dom4j dom4j dom4j dom4j dom4j
DOM4J jar包 所有的包 xml解析 dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1 导入直接使用
dom4j是目前比较主流的对xml文件进行解析的API。
Dom4j解析xml与配置文件的小例子,简单的Dom4j的小应用。
该示例实现MAVEN来进行创建的,实现了dom4j操作XML文件,包括创建XML、动态创建XML节点、更新XML节点、删除XML节点。
org.dom4j.bean org.dom4j.datatype org.dom4j.dom org.dom4j.dtd org.dom4j.io org.dom4j.jaxb org.dom4j.rule org.dom4j.rule.pattern org.dom4j.swing org.dom4j.tree org.dom4j.util org.dom4j.xpath...
NULL 博文链接:https://yangyongbyjava.iteye.com/blog/2068636
dom4j技术教程,dom4j是一个很好的解析xml文档的框架
使用dom4j 1.4版本进行编辑的,区别于1.6,大家可以测试一下1.4和1.6的区别