dom4j初学入门

xiaoxiao2026-08-21  15

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> <name>James</name> </person>; 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(JamesStrachan); 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文件的功能。 package com.dom4j.test;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.Iterator;import java.util.List;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 NewXML {/*** * 用DOM4J创建一个XML文件* @param args*/public boolean newXMl(String fileName){ boolean returnValue=false; //定义一个XML文档 Document docement=DocumentHelper.createDocument(); //设置XML文档的元素 Element rootElement=docement.addElement("DOM4J创建XML文档"); rootElement.addComment("镜花水月2007-4-24晚上创建"); Element nameElement=rootElement.addElement("镜花水月"); nameElement.addAttribute("名字","不告诉你"); Element schoolElement=nameElement.addElement("学校"); schoolElement.setText("西安翻译学院"); Element cityElement=rootElement.addElement("城市"); cityElement.setText("上海"); Element homeElement=cityElement.addElement("住址"); homeElement.setText("徐家汇"); //创建XML文档 try { /** 格式化输出,类型IE浏览一样 */ OutputFormat format = OutputFormat.createPrettyPrint(); /** 指定XML编码 */ format.setEncoding("GBK"); XMLWriter writer=new XMLWriter(new FileWriter(new File(fileName)),format); writer.write(docement); writer.close(); return returnValue=true; } catch (IOException e) { e.printStackTrace(); } return returnValue;}/*** * 用DOM4J修改一个XML文件* @param args* */public boolean update(String fileName,String newFileName){ boolean returnValaue=false; SAXReader reader=new SAXReader(); try { Document docement=reader.read(new File(fileName)); List list=null; list=docement.selectNodes("/DOM4J创建XML文档/镜花水月/@名字"); Iterator it=list.iterator(); while(it.hasNext()){ Attribute attribute=(Attribute) it.next(); if(attribute.getValue().equals("不告诉你")){ attribute.setValue("还是不告诉你"); } } //将就该写入新的文件 try { //转码 OutputFormat format=OutputFormat.createPrettyPrint(); format.setEncoding("GBK"); XMLWriter writer=new XMLWriter(new FileWriter(new File(newFileName)),format); writer.write(docement); writer.close(); return returnValaue=true; } catch (IOException e) { e.printStackTrace(); } } catch (DocumentException e) { e.printStackTrace(); } return returnValaue;}public static void main(String[] args) { NewXML newXml=new NewXML(); String name="newXML.xml"; String newName="UpdateXML.xml"; if(!newXml.newXMl(name)){ System.out.println("创建出现错误!"); return ; }else{ System.out.println("创建XML成功!"); } if(!newXml.update(name,newName)){ System.out.println("修改出现错误!"); return; }else{ System.out.println("修改XML成功"); } }} 相关资源:dom4j入门例子
转载请注明原文地址: https://www.6miu.com/read-5051609.html

最新回复(0)