dom4j知识总结

DOM4J是dom4j.org出品的一个开源XML解析包。Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
它的主要接口都在org.dom4j这个包里定义:
Attribute定义了XML的属性
Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为,
CDATA 定义了XML CDATA 区域
CharacterData是一个标识借口,标识基于字符的节点。如CDATA,Comment, Text.
Comment 定义了XML注释的行为
定义了XML文档
DocumentType 定义XML DOCTYPE声明
Element定义XML 元素
ElementHandler定义了 Element 对象的处理器
ElementHandler 使用,用于取得当前正在处理的路径层次信息
Entity定义 XML entity
Node为所有的dom4j中XML节点定义了多态行为
NodeFilter 定义了在dom4j节点中产生的一个滤镜或谓词的行为(predicate)
ProcessingInstruction 定义 XML 处理指令.
Text 定义XML 文本节点.
Visitor 用于实现Visitor模式.
XPath 在分析一个字符串后会提供一个XPath 表达式
看名字大致就知道它们的涵义如何了。
要想弄懂这套接口,关键的是要明白接口的继承关系:
从上面的继承关系,可以看出
-Node为所有的dom4j中XML节点定义了多态行为;
 
-Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为;
|-Element 定义XML 元素;
|-Document定义了XML文档;
 
-DocumentType 定义XML DOCTYPE声明;
-Entity定义 XML entity;
-Attribute定义了XML的属性;
-ProcessingInstruction 定义 XML 处理指令;
 
-CharacterData是一个标识借口,标识基于字符的节点。如CDATA,Comment, Text;
|- CDATA 定义了XML CDATA 区域;
|-Text 定义XML 文本节点;
|- Comment 定义了XML注释的行为;

那我们现在就来看怎么使用dom4j

1.创建xml文档
要创建如下形式的xml

  <data  name="userInfo">

    <consNo>用户编号</consNo>

    <consId>用户ID</consId>

  </data>
从中,我们可以看出一个xml文件包含元素(element)和属性(attribute),这对于下面的解析至关重要。
        Document document = DocumentHelper.createDocument();
        Element root = document.addElement("data");  
<pre name="code" class="java">        root.addAttribute("name", "userInfo");  
	Element consNo = root.addElement("consNo");    
	consNo.addText("1");
		
	Element consId = root.addElement("consId");     
	consId.addText("2");
 
 
创建完成以后,我们可以将doucment存放到一个String中,或者一个文件中
(1)存放到String
        String xmlPara= document.asXML(); 
(2)存放到文件
        OutputFormat format = new OutputFormat(" ", true); 
        XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("d://data.xml"), format);  
        xmlWriter.write(document);  

2.解析xml文档
        // 1.创建saxReader对象
        SAXReader saxReader = new SAXReader();  
        //2. 通过read方法读取一个xml文件 转换成Document对象
        Document doc = saxReader.read(new File("d://data.xml"));  
        //3.获取根节点元素对象
        Element root = doc.getRootElement();  
        //获取根结点元素
        System.out.println("root element: " + root.getName());  
        //获取属性的值
        System.out.println("root attribute:"+root.attributeValue("name"));
        //变量根结点下的所有元素
        List childList = root.elements();      
        System.out.println("根节点下元素的个数:"+childList.size());        
        List childList2 = root.elements("consNo");    
        System.out.println("孩子结点下的元素个数:"+childList2.size());     
        Element consNo = root.element("consNo");     
        System.out.println("结点consNo对应的属性值:"+consNo.getText());   
得到如下结果:
root element: data
root attribute:userInfo
根节点下元素的个数:2
孩子结点下的元素个数:1
结点consNo对应的属性值:01001

PS:1.XML中,主要有节点元素(如:data)、节点属性Attribute(如name="userInfo")和文本内容(是嵌套在2个XML标签之中的,如:用户编号)

2.XML的遍历是一层一层的,只有先获取到上一层结点,才可以获得次结点的孩子结点

3.<![CDATA[data的内容是具体的用户信息.]]>相当于注释会被解析器所忽视。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值