开发者社区> 楚兴> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

dom4j解析和生成XML文件

简介: 转化XML import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; public class Foo { public Document parse(URL url) throws DocumentException {
+关注继续查看

转化XML

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

public class Foo {

    public Document parse(URL url) throws DocumentException {
        SAXReader reader = new SAXReader();
        Document document = reader.read(url);
        return document;
    }
}

使用迭代器

document可以通过几个返回Java标准迭代器的方法实现遍历:

public void bar(Document document) throws DocumentException {

    Element root = document.getRootElement();

    // iterate through child elements of root
    for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
        Element element = (Element) i.next();
        // do something
    }

    // iterate through child elements of root with element name "foo"
    for ( Iterator i = root.elementIterator( "foo" ); i.hasNext(); ) {
        Element foo = (Element) i.next();
        // do something
    }

    // iterate through attributes of root 
    for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
        Attribute attribute = (Attribute) i.next();
        // do something
    }
 }

快速循环

快速遍历大文件:

public void treeWalk(Document document) {
     treeWalk( document.getRootElement() );
 }

 public void treeWalk(Element element) {
     for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
         Node node = element.node(i);
         if ( node instanceof Element ) {
             treeWalk( (Element) node );
         }
         else {
             // do something....
         }
     }
 }

创建XML文档

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

public class Foo {

    public Document createDocument() {
        Document document = DocumentHelper.createDocument();
        Element root = document.addElement( "root" );

        Element author1 = root.addElement( "author" )
            .addAttribute( "name", "James" )
            .addAttribute( "location", "UK" )
            .addText( "James Strachan" );

        Element author2 = root.addElement( "author" )
            .addAttribute( "name", "Bob" )
            .addAttribute( "location", "US" )
            .addText( "Bob McWhirter" );

        return document;
    }
}

将文档写入文件

一种快速而且简单的方式如下:

FileWriter out = new FileWriter( "foo.xml" );
document.write( out );

如果想要修改输出的格式,如智能缩进输出或者紧凑输出,或者你想要使用writer对象或者OutputStream对象来完成其他任务,则可以使用XMLWriter类。

import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Foo {

    public void write(Document document) throws IOException {

        // lets write to a file
        XMLWriter writer = new XMLWriter(
            new FileWriter( "output.xml" )
        );
        writer.write( document );
        writer.close();


        // Pretty print the document to System.out
        OutputFormat format = OutputFormat.createPrettyPrint();
        writer = new XMLWriter( System.out, format );
        writer.write( document );

        // Compact format to System.out
        format = OutputFormat.createCompactFormat();
        writer = new XMLWriter( System.out, format );
        writer.write( document );
    }
}

与String的转化

如果有到Document或者其他结点如AttributeElement等的引用,则可以用asXML()方法将其转化为默认的XML文本。

Document document = ...;
String text = document.asXML();

如果有String形式的XML,则可以使用DocumentHelper.parseText()将其转化为Document

String text = "<person> <name>James</name> </person>";
Document document = DocumentHelper.parseText(text);

其他操作

1 取得某结点下的某个子节点或属性

Element root = document.getRootElement();
Element elem = root.element("book");
Attribute attribute = root.attribute("id");

2 取得属性的内容

String text = attribute.getText();

3 删除某属性

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
jar包神作之 dom4j (让xml解析变得如此简单)
xml的增删改查(dom4j.jar) 应该不用多久就可以使用通过jdk自带的jar包实现解析,–》dom解析,现在基础比较薄弱
0 0
使用dom4j工具:设置输出两种xml格式-紧密型和美观型
今天学习使用不知名大佬的domj4 jar包以及用到的几个其他的包,来简单写一个xml
0 0
Java中使用DOM4J来生成xml文件和解析xml文件
Java中使用DOM4J来生成xml文件和解析xml文件
0 0
利用dom4j解析xml
利用dom4j解析xml
0 0
java积累——dom4j读取xml文件
java积累——dom4j读取xml文件
0 0
【JavaWeb】XML的理解与Dom4j解析技术的使用(下)
1 xml简介 2 xml入门 2.1 xml示例文件 2.2 xml语法介绍 2.2.1 xml注释 2.2.2 元素(标签) 2.2.3 xml的属性 2.2.4 xml语法规范 2.2.5 文本区域(CDARA) 2.3 xml解析技术 3 Dom4j 解析技术 3.1 Dom4j 类库的下载与简介 3.2 dom4j编程一般步骤 3.3 案例:使用dom4j读取xml文件得到Document对象
0 0
【JavaWeb】XML的理解与Dom4j解析技术的使用(上)
1 xml简介 2 xml入门 2.1 xml示例文件 2.2 xml语法介绍 2.2.1 xml注释 2.2.2 元素(标签) 2.2.3 xml的属性 2.2.4 xml语法规范 2.2.5 文本区域(CDARA) 2.3 xml解析技术 3 Dom4j 解析技术 3.1 Dom4j 类库的下载与简介 3.2 dom4j编程一般步骤 3.3 案例:使用dom4j读取xml文件得到Document对象
0 0
使用 dom4j 实现查询 xml 操作(二)| 学习笔记
快速学习使用 dom4j 实现查询 xml 操作。
0 0
Java Web之JSP操作XML(XML的文档结构 语法和注释、dom4j的下载与配置 应用dom4j创建、解析和修改XML)
Java Web之JSP操作XML(XML的文档结构 语法和注释、dom4j的下载与配置 应用dom4j创建、解析和修改XML)
0 0
dom4j解析xml实战
dom4j解析xml实战
0 0
+关注
楚兴
达则兼济天下,穷则独善其身。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载