博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DOM4J使用教程
阅读量:4197 次
发布时间:2019-05-26

本文共 5973 字,大约阅读时间需要 19 分钟。

 

DOM4j是一个易用的,开源的JAVA操作XML的API,写过一篇4种XML操作API的比较,DOM4j是性能和易用行最佳的。因此做一个小教程,供初学者学习。

         学习DOM4j首先就先来了解下它主要的包

                DOM4j所有的接口都在org.dom4j这个包里定义着

               org.dom4j.Attribute : Attribute接口定义了XML文件的属性

               org.dom4j.Branch  : Branch为能够包含子节点的节点如XML元素和文档定义了一个公共行为

               org.dom4j.CDATA  : CDATA定义了XML CDATA区域

               org.dom4j.CharacterData: CharacterData是一个标识接口,标识基于字符的节点。

               org.dom4j.Comment  : Comment定义了XML注释的行为

               org.dom4j.Document : Docement接口定义了XML文档

               org.dom4j.Element   : Element定义了XML元素

               org.dom4j.ElementHandler: ElementHandler定义了Element对象的处理器

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

               org.dom4j.Entity     : Entity定义XML entity

               org.dom4j.Node :   Node为所有的dom4j中XML节点定义了多态行为

               org.dom4j.NodeFilter :  NodeFilter定义了在dom4j节点中产生的一个滤镜或谓词的行为

               org.dom4j.ProcessingInstruction : ProcessingInstruction定义XML处理指令

               org.dom4j.Text   : Test定义了XML文本节点

               org.dom4j.Visitor : Visitor用于实现Visitor模式

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

          下面说下主要的实用方法

          1:  读取并解析XML文档:

               读写XML文档主要依赖于org.dom4j.io包,提供了DOMReader和SAXReader两类不同方式,调用方式一样。

           // 从文件读取XML,输入文件名,返回XML文档

   
public Document read(String fileName)
throws MalformedURLException, DocumentException {
      
               SAXReader reader =
new SAXReader();
 
             Document document = reader.read(
new File(fileName));
 
            
return document;
        }
   2:取得ROOT节点
         如果要读取一个XML文件,最重要的就是要读取ROOT节点了,一切分析XML都是从ROOT节点开始。
     
    
public Element getRootElement(Document doc){
            
return doc.getRootElement();
     }
 
   3:遍历XML树,这里有二种方法
      (1): 枚举
           // 枚举所有子节点
    for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
       Element element = (Element) i.next();
       // do something
    }
    // 枚举名称为foo的节点
    for ( Iterator i = root.elementIterator(foo); i.hasNext();) {
       Element foo = (Element) i.next();
       // do something
    }
    // 枚举属性
    for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
       Attribute attribute = (Attribute) i.next();
       // do something
    }
 
  (2) :  递归
    
public
void treeWalk() {
       treeWalk(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....
           }
       }
}
 
  4:字符串与XML的转换
   // XML转字符串
  Document document = ...;
    String text = document.asXML();
  // 字符串转XML
    String text = <person></person> <name></name>James ;
    Document document = DocumentHelper.parseText(text);
 
  5. 创建XML
     这里创建一个XML,没有写
   
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;
    }
   6: XML 文件输出
   FileWriter out =
new FileWriter( foo.xml );
    document.write(out);
  
 
    DOM4j 的简单常用的方法上面总结了下,大家可以有一个印象,想要学的仔细了就要自己好好研究了,下面有一个以前写的小程序,实现了对XML的增删改查的功能。
这里的JBoltModuleMeta是个POJO对象,大家随便造个就可以随便修改XML

转载地址:http://bdbli.baihongyu.com/

你可能感兴趣的文章
IBM Cognos 11 简单Dashboard创建
查看>>
随想 110715
查看>>
Service
查看>>
构筑全栈式安全体系
查看>>
金橙子激光打标机的二次开发(C#)
查看>>
(坑集)virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not
查看>>
如何使用软碟通制作启动U盘
查看>>
Ubuntu16.04安装Python3.6
查看>>
Ubuntu apt-get和pip源更换以及apt update和upgrade 的区别
查看>>
关于GIT,你只需要看这篇文章。
查看>>
MySQL数据库之基础备份
查看>>
http协议之常用状态码总结
查看>>
python中的四个BIF:filter()、map()、zip()、enumerate()
查看>>
python 变量作用域、闭包、装饰器
查看>>
python中的浅拷贝,深拷贝的区别和理解
查看>>
python之迭代器(Iterator)、生成器(yield)、协程(gevent)
查看>>
python之字符串(str)和编码
查看>>
数据结构与算法-七种排序算法
查看>>
python之sklearn-特征工程-1.1特征工程
查看>>
python之sklearn-特征工程-1.2 特征抽取
查看>>