首页 > 其他 > 详细

Dom4J解析xml文档

时间:2014-03-27 10:44:44      阅读:513      评论:0      收藏:0      [点我收藏+]

1、DOM4J简介

DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。

DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型,就能使用。

Dom:把整个文档作为一个对象。

DOM4J 最大的特色是使用大量的接口。它的主要接口都在org.dom4j里面定义:

Attribute

定义了 XML 的属性。

Branch

指能够包含子节点的节点。如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为

CDATA

定义了 XML CDATA 区域

CharacterData

是一个标识接口,标识基于字符的节点。如CDATA,Comment, Text.

Comment

定义了 XML 注释的行为

Document

定义了XML 文档

DocumentType

定义 XML DOCTYPE 声明

Element

定义XML 元素

ElementHandler

定义了Element 对象的处理器

ElementPath

被 ElementHandler 使用,用于取得当前正在处理的路径层次信息

Entity

定义 XML entity

Node

为dom4j中所有的XML节点定义了多态行为

NodeFilter

定义了在dom4j 节点中产生的一个滤镜或谓词的行为(predicate)

ProcessingInstruction

定义 XML 处理指令

Text

定义 XML 文本节点

Visitor

用于实现 Visitor模式

XPath

在分析一个字符串后会提供一个 XPath 表达式

 

2、XML文档操作1

读取XML文档:

读写XML文档主要依赖于org.dom4j.io包,有DOMReader和SAXReader两种方式。

bubuko.com,布布扣
private void ReadRss(String filePath) {

        File file = new File(filePath);

        if (!file.exists()) {
            // System.out.println("找不到【" + filePath + "】文件");
            // return;
            throw new RuntimeException("找不到【" + filePath + "】文件");
        }

        try {
            // 读取并解析XML文档
            // SAXReader就是一个管道,用一个流的方式,把xml文件读出来
            SAXReader reader = new SAXReader();
            FileInputStream fis = new FileInputStream(file);
            // 下面的是通过解析xml字符串的
            Document doc = reader.read(fis);
            // 获取根节点
            Element rootElt = doc.getRootElement(); // 获取根节点
            // System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称

            // 获取head/title节点
            Element titleElt = (Element) rootElt.selectSingleNode("head/title");

            // 获取名称
            String title = titleElt.getTextTrim();
                } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}   
bubuko.com,布布扣

 

遍历xml节点

Element类

getQName()

元素的QName对象

getNamespace()

元素所属的Namespace对象

getNamespacePrefix()

元素所属的Namespace对象的prefix

getNamespaceURI()

元素所属的Namespace对象的URI

getName()

元素的local name

getQualifiedName()

元素的qualified name

getText()

元素所含有的text内容,如果内容为空则返回一个空字符串而不是null

getTextTrim()

元素所含有的text内容,其中连续的空格被转化为单个空格,该方法不会返回null

attributeIterator()

元素属性的iterator,其中每个元素都是Attribute对象

attributeValue()

元素的某个指定属性所含的值

elementIterator()

元素的子元素的iterator,其中每个元素都是Element对象

element()

元素的某个指定(qualified name或者local name)的子元素

elementText()

元素的某个指定(qualified name或者local name)的子元素中的text信息

getParent

元素的父元素

getPath()

元素的XPath表达式,其中父元素的qualified name和子元素的qualified name之间使用"/"分隔

isTextOnly()

是否该元素只含有text或是空元素

isRootElement()

是否该元素是XML树的根节点

 

bubuko.com,布布扣
Element bodyElt = (Element) rootElt.selectSingleNode("body");
// 获取body节点下的outline节点
Iterator<?> iter = bodyElt.elementIterator("outline");
while (iter.hasNext()) {
            // 读取outline节点下的所有outline信息,每条信息都是一条订阅记录
        Element TeamElt = (Element) iter.next();

        // 重新获取分组名称
        String title = TeamElt.attributeValue("title");
        String text = TeamElt.attributeValue("text");

        // 获取body节点下的outline节点
        Iterator<?> iterRss = TeamElt.elementIterator("outline");
}
bubuko.com,布布扣

Dom4J解析xml文档,布布扣,bubuko.com

Dom4J解析xml文档

原文:http://www.cnblogs.com/updateofsimon/p/3624716.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!