java的xml api接口dom4j一简单例子

dom4j感觉有点像js了我们来看一个关于dom4j的一些基本的用法吧。

基本用法

1.获取文档的根节点.
Element rootElm = document.getRootElement();
2.取得某节点的单个子节点.
Element memberElm=root.element("member");// "member"是节点名
3.取得节点的文字
String text=memberElm.getText();
也可以用:
String text=root.elementText("name");这个是取得根节点下的name字节点的文字.

4.取得某节点下名为"member"的所有字节点并进行遍历.
List nodes = rootElm.elements("member");

for (Iterator it = nodes.iterator(); it.hasNext();) {
   Element elm = (Element) it.next();
   // do something
}
5.对某节点下的所有子节点进行遍历.
            for(Iterator it=root.elementIterator();it.hasNext();){
                Element element = (Element) it.next();
                // do something
            }
6.在某节点下添加子节点.
Element ageElm = newMemberElm.addElement("age");
7.设置节点文字.
ageElm.setText("29");
8.删除某节点.
parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点

在IBM developerWorks上面还可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的。如今可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包, Hibernate也用它来读写配置文件。

例子,读写xml

package com.test.transport.service;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class XMLService {
    public static Logger log = Logger.getLogger(XMLService.class);
    public Document getDocument(){
        Document doc = DocumentHelper.createDocument();
        doc.addComment("a simple demo ");
        Element root = doc.addElement("Persons");
        Element p1 = root.addElement("Person");
        p1.addAttribute("name", "xiaohei");
        p1.addAttribute("age", "20");
        p1.addAttribute("sex", "male");
        Element p2 = root.addElement("Person");
        p2.addAttribute("name", "xiaobai");
        p2.addAttribute("age", "21");
        p2.addAttribute("sex", "female");
        return doc;
    }
    public void saveDocument(Document doc,String filepath){
        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter writer = null;
        try {
            writer = new XMLWriter(new FileWriter(new File(filepath)), format);
            writer.write(doc);
            writer.flush();
            writer.close();
        } catch (IOException e) {
            log.error("文件错误");
            e.printStackTrace();
        }
    }
    public static void main(String args[]){
        XMLService service = new XMLService();
        Document doc = service.getDocument();
        service.saveDocument(doc, "demo.xml");
    }
}

2、增加修改方法

package com.test.transport.service;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class XMLService {
    public static Logger log = Logger.getLogger(XMLService.class);
    public Document getDocument(){
        Document doc = DocumentHelper.createDocument();
        doc.addComment("a simple demo ");
        Element root = doc.addElement("Persons");
        Element p1 = root.addElement("Person");
        p1.addAttribute("name", "xiaohei");
        p1.addAttribute("age", "20");
        p1.addAttribute("sex", "male");
        Element p2 = root.addElement("Person");
        p2.addAttribute("name", "xiaobai");
        p2.addAttribute("age", "21");
        p2.addAttribute("sex", "female");
        return doc;
    }
    public void saveDocument(Document doc,String filepath){
        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter writer = null;
        try {
            writer = new XMLWriter(new FileWriter(new File(filepath)), format);
            writer.write(doc);
            writer.flush();
            writer.close();
        } catch (IOException e) {
            log.error("文件错误");
            e.printStackTrace();
        }
    }
    public Document editDocument(File inputFile){
        SAXReader saxReader = new SAXReader();
        Document doc = null;
        try {
            doc = saxReader.read(inputFile);
        } catch (DocumentException e) {
            log.error("读取文件错误");
            e.printStackTrace();
        }
        List<Attribute> list = doc.selectNodes("//Persons/Person/@name");
        Iterator<Attribute> iterator = list.iterator();
        while(iterator.hasNext()){
            Attribute attribute = iterator.next();
            if(attribute.getValue().endsWith("xiaohei")){
                attribute.setValue("zhaodaoxiaohei");
            }
        }
        List<Element> list2 = doc.selectNodes("//Persons/Person");
        Iterator<Element> iterator2 = list2.iterator();
        while (iterator2.hasNext()) {
            Element element = iterator2.next();
            element.addText("5");
            if(element.attributeValue("name").equals("xiaobai")){
                element.addElement("grade").addText("3");
            }
        }
        return doc;
    }
    public static void main(String args[]){
        XMLService service = new XMLService();
        Document doc = service.getDocument();
        service.saveDocument(doc, "demo.xml");
       
        Document document = service.editDocument(new File("demo.xml"));
        service.saveDocument(document, "demo.xml");
    }
}

时间: 2024-10-11 09:47:07

java的xml api接口dom4j一简单例子的相关文章

Java下XML编程接口比较:DOM SAX JDOM JAXP

一.DOM (文档对象模型) 为 XML 文档的已解析版本定义了一组接口.解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构. 优点:整个文档树在内存中,便于操作:支持删除.修改.重新排列等多种功能: 缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间: 使用场合:一旦解析了文档还需多次访问这些数据: 硬件资源充足(内存.CPU)二.SAX 为解决DOM的问题,出现了SAX. SAX ,事件驱动.当解析器发现元素开始.元素结束.文本.文档的

JAVA对XML文件的读写(有具体的代码和解析)

XML 指可扩展标记语言(EXtensible Markup Language),是独立于软件和硬件的信息传输工具,应用于 web 开发的许多方面,常用于简化数据的存储和共享. xml指令 处理指令,简称PI (processing instruction).处理指令用来指挥解析引擎如何解析XML文档内容. 以下为例: 进入主题了 首先要有一个xml文件为名字为emplist.xml内容如下 <?xml version="1.0" encoding="UTF-8&quo

Java获取XML节点总结之读取XML文档节点的方法_java

dom4j是Java的XML API,用来读写XML文件的.目前有很多场景中使用dom4j来读写xml的. 要使用dom4j开发,需要下载导入dom4j相应的jar文件. 官网下载:http://www.dom4j.org/dom4j-1.6.1/ github下载:http://dom4j.github.io/ 下载解压之后如图所示: 我们只需要把dom4j-1.6.1.jar文件构建到我们开发项目中就可以了. 下面就以Eclipse创建java项目的构建方法为例说明: 声明:本Java项目的

java api-Java写个简单的API接口给前端使用,是如何实现的?

问题描述 Java写个简单的API接口给前端使用,是如何实现的? Java写一个简单的API给前端调用,是如何实现的,求一个简单的demo! 解决方案 Java 简单的接口实现[使用forward实现API接口转发]java简单实现webservice接口 解决方案二: 最简单的,写一个jsp页面,接收parameters,然后返回输出js.客户端用ajax去调用. 解决方案三: 你先好好学学SSH基础

开发流程- 公司要与其他网站合作,要求开发api接口,供合作方调用,返回的数据是json或xml格式的

问题描述 公司要与其他网站合作,要求开发api接口,供合作方调用,返回的数据是json或xml格式的 请问这个开发流程大概是怎样的?求解..................................................... 解决方案 asp.net webapi非常适合做这个,你只要按照你原来的方式编写函数调用,它会自动将提交的数据转换成对象,作为参数传入,以及传出的参数转换成json返回. 解决方案二: 不管你后台用.net还是java还是php,你只需要公布一个可以访问的

用Java实现全国天气预报的api接口调用示例_java

step1:选择本文所示例的接口"全国天气预报接口" 聚合数据url:http://www.juhe.cn/docs/api/id/39/aid/87 step2:每个接口都需要传入一个参数key,相当于用户的令牌,所以第一步你需要申请一个key. step3:学过java的同学们都知道,当我们对一个类或者方法不明白其意图和思想时,我们可以去查看文档,这里也不例外,而且对于英文不是特别好的同学来说很幸运的是,聚合网站上的文档都是中文版本的,比起阅读java源码里的英文文档应该轻松很多.

使用Java解析XML文件(二) DOM4J篇

Dom4j是一个易用的.开源的库,用于XML,XPath和XSLT解析.它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP.官方网址:http://www.dom4j.org/. Dom4J在很多方面拥有更强大的功能,鼎鼎有名的Hibernate也使用它来做XML配置文件的解析. import java.io.FileWriter; import java.io.IOException; import org.dom4j.Document; import org.do

环信,将移动通讯技术封装成简单的API接口

摘要: 十年前,你想找人建个网站,对方坐地要价开口就是两万,现在你想建个网站,便宜的不到一百块钱就能搞定,像国外的WordPress和国内的Discuz! 这类开源项目,能让用户很方便地建个人 "十年前,你想找人建个网站,对方坐地要价开口就是两万,现在你想建个网站,便宜的不到一百块钱就能搞定,像国外的WordPress和国内的Discuz! 这类开源项目,能让用户很方便地建个人网站或社区论坛.现在的移动互联网很像十年前的PC互联网,研发一个App的成本普遍比较高,但已经有一些创业团队在提供基础服

java 使用http协议访问api接口,发送json数据

问题描述 java 使用http协议访问api接口,发送json数据 http访问 api接口,http的头需要加入id 和密钥进行验证,发送json格式的数据给应用程序,求大神指教.有没有实例程序可供参考的,谢谢各位了 解决方案 jsp服务器端 变量 = request.getHeader(""http头字段""); 客户端 HashMap<String String> headers = new HashMap<String String>