DOM4J使用简介
| 版权声明: 本文由冰云完成,首发于CSDN,未经许可,不得使用于任何商业用途。 文中代码部分引用自DOM4J文档。 欢迎转载,但请保持文章及版权声明完整。 如需联络请发邮件:icecloud(AT)sina.com | 
| 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 表达式 | 
- interface org.dom4j.CharacterData
- interface org.dom4j.DocumentType
- interface org.dom4j.Entity
- interface org.dom4j.ProcessingInstruction
|     // 从文件读取XML,输入文件名,返回XML文档     public Document read(String fileName) throws MalformedURLException, DocumentException {        SAXReader reader = new SAXReader();        Document document = reader.read(new File(fileName));        return document;     } | 
|    public Element getRootElement(Document doc){        return doc.getRootElement();     } | 
|     // 枚举所有子节点     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     } | 
|     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....            }        } } | 
|         public class MyVisitor extends VisitorSupport {            public void visit(Element element){                System.out.println(element.getName());            }            public void visit(Attribute attr){                System.out.println(attr.getName());            }         }         调用:  root.accept(new MyVisitor()) | 
|    public void bar(Document document) {         List list = document.selectNodes( //foo/bar );         Node node = document.selectSingleNode(//foo/bar/author);         String name = node.valueOf( @name );      } | 
|     public void findLinks(Document document) throws DocumentException {         List list = document.selectNodes( //a/@href );         for (Iterator iter = list.iterator(); iter.hasNext(); ) {             Attribute attribute = (Attribute) iter.next();             String url = attribute.getValue();         }      } | 
|     // XML转字符串   Document document = ...;     String text = document.asXML(); // 字符串转XML     String text = James ;     Document document = DocumentHelper.parseText(text); | 
|    public Document styleDocument(        Document document,        String stylesheet     ) throws Exception {     // load the transformer using JAXP     TransformerFactory factory = TransformerFactory.newInstance();     Transformer transformer = factory.newTransformer(        new StreamSource( stylesheet )     );     // now lets style the given document     DocumentSource source = new DocumentSource( document );     DocumentResult result = new DocumentResult();     transformer.transform( source, result );     // return the transformed document     Document transformedDoc = result.getDocument();     return transformedDoc; } | 
|     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); | 
|     public void write(Document document) throws IOException {        // 指定文件        XMLWriter writer = new XMLWriter(            new FileWriter( output.xml )        );        writer.write( document );        writer.close();        // 美化格式        OutputFormat format = OutputFormat.createPrettyPrint();        writer = new XMLWriter( System.out, format );        writer.write( document );        // 缩减格式        format = OutputFormat.createCompactFormat();        writer = new XMLWriter( System.out, format );        writer.write( document );     } | 
| holen.xml | 
| <?xml version="1.0" encoding="UTF-8"?>     <!--This is a test for dom4j, holen, 2004.9.11-->     O'Reilly | 
|  | 
|     /**      * 建立一个XML文档,文档名由输入属性决定      * @param filename 需建立的文件名      * @return 返回操作结果, 0表失败, 1表成功      */     public int createXMLFile(String filename){        /** 返回操作结果, 0表失败, 1表成功 */        int returnValue = 0;        /** 建立document对象 */        Document document = DocumentHelper.createDocument();        /** 建立XML文档的根books */        Element booksElement = document.addElement("books");        /** 加入一行注释 */        booksElement.addComment("This is a test for dom4j, holen, 2004.9.11");        /** 加入第一个book节点 */        Element bookElement = booksElement.addElement("book");        /** 加入show属性内容 */        bookElement.addAttribute("show","yes");        /** 加入title节点 */        Element titleElement = bookElement.addElement("title");        /** 为title设置内容 */        titleElement.setText("Dom4j Tutorials");        /** 类似的完成后两个book */        bookElement = booksElement.addElement("book");        bookElement.addAttribute("show","yes");        titleElement = bookElement.addElement("title");        titleElement.setText("Lucene Studing");        bookElement = booksElement.addElement("book");        bookElement.addAttribute("show","no");        titleElement = bookElement.addElement("title");        titleElement.setText("Lucene in Action");        /** 加入owner节点 */        Element ownerElement = booksElement.addElement("owner");        ownerElement.setText("O'Reilly");        try{            /** 将document中的内容写入文件中 */            XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)));            writer.write(document);            writer.close();            /** 执行成功,需返回1 */            returnValue = 1;        }catch(Exception ex){            ex.printStackTrace();        }        return returnValue;     } | 
|  | 
| <?xml version="1.0" encoding="UTF-8"?> <!--This is a test for dom4j, holen, 2004.9.11-->O'Reilly | 
|  | 
|     /**      * 修改XML文件中内容,并另存为一个新文件      * 重点掌握dom4j中如何添加节点,修改节点,删除节点      * @param filename 修改对象文件      * @param newfilename 修改后另存为该文件      * @return 返回操作结果, 0表失败, 1表成功      */     public int ModiXMLFile(String filename,String newfilename){        int returnValue = 0;        try{            SAXReader saxReader = new SAXReader();            Document document = saxReader.read(new File(filename));            /** 修改内容之一: 如果book节点中show属性的内容为yes,则修改成no */            /** 先用xpath查找对象 */            List list = document.selectNodes("/books/book/@show" );            Iterator iter = list.iterator();            while(iter.hasNext()){               Attribute attribute = (Attribute)iter.next();               if(attribute.getValue().equals("yes")){                   attribute.setValue("no");               }              }            /**             * 修改内容之二: 把owner项内容改为Tshinghua             * 并在owner节点中加入date节点,date节点的内容为2004-09-11,还为date节点添加一个属性type             */            list = document.selectNodes("/books/owner" );            iter = list.iterator();            if(iter.hasNext()){               Element ownerElement = (Element)iter.next();               ownerElement.setText("Tshinghua");               Element dateElement = ownerElement.addElement("date");               dateElement.setText("2004-09-11");               dateElement.addAttribute("type","Gregorian calendar");            }            /** 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点 */            list = document.selectNodes("/books/book");            iter = list.iterator();            while(iter.hasNext()){               Element bookElement = (Element)iter.next();               Iterator iterator = bookElement.elementIterator("title");               while(iterator.hasNext()){                   Element titleElement=(Element)iterator.next();                   if(titleElement.getText().equals("Dom4j Tutorials")){                      bookElement.remove(titleElement);                   }               }            }                     try{               /** 将document中的内容写入文件中 */               XMLWriter writer = new XMLWriter(new FileWriter(new File(newfilename)));               writer.write(document);               writer.close();               /** 执行成功,需返回1 */               returnValue = 1;            }catch(Exception ex){               ex.printStackTrace();            }        }catch(Exception ex){            ex.printStackTrace();        }        return returnValue;     } | 
|  | 
|     /**      * 格式化XML文档,并解决中文问题      * @param filename      * @return      */     public int formatXMLFile(String filename){        int returnValue = 0;        try{            SAXReader saxReader = new SAXReader();            Document document = saxReader.read(new File(filename));            XMLWriter writer = null;            /** 格式化输出,类型IE浏览一样 */            OutputFormat format = OutputFormat.createPrettyPrint();            /** 指定XML编码 */            format.setEncoding("GBK");            writer= new XMLWriter(new FileWriter(new File(filename)),format);            writer.write(document);            writer.close();                 /** 执行成功,需返回1 */            returnValue = 1;            }catch(Exception ex){            ex.printStackTrace();        }        return returnValue;     } | 
DOM4J使用简介的更多相关文章
- Dom4j 使用简介(全而好的文章)
		版权声明:本文由冰云完成,首发于CSDN,未经许可,不得使用于任何商业用途.文中代码部分引用自DOM4J文档.欢迎转载,但请保持文章及版权声明完整.如需联络请发邮件:icecloud(AT)sina. ... 
- 1.使用dom4j解析XML文件
		一.dom4j的简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它 ... 
- 【转载】Dom4j的使用(全而好的文章)
		Dom4j的使用(全而好的文章) Dom4j 使用简介 作者:冰云 icecloud(AT)sina.com 时间:2003.12.15 版权声明: 本文由冰云完成,首发于CSDN,未经许可,不得 ... 
- 程序开发常用第三方类库一览表(VendorLib)
		以下是自己开发过程中用到的第三方类库,记录下来方便查阅 ------------------------------------------------------------------------ ... 
- dom4j API使用简介
		dom4j API使用简介 功能简介 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极 ... 
- Dom4j下载及使用Dom4j读写XML简介(转)
		Dom4j下载及使用Dom4j读写XML简介 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:ht ... 
- 1、DOM4J简介
		1.DOM4J简介 DOM4J是 dom4j.org 出品的一个开源 XML 解析包.DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP. DOM4J ... 
- Dom4j下载及使用Dom4j读写XML简介
		sitinspring(如坐春风)原创,转载请注明作者及出处. 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4 ... 
- 转:在java中使用dom4j解析xml
		JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ... 
随机推荐
- 关于S/4HANA里Sales Office 和Sales Organization那些事儿
			今天这篇文章来自我的成都同事Zhang Sean(张正永). Sean也是一位在SAP行业摸爬滚打多年的老兵了,2009年从大学硕士毕业之后就进入了SAP Labs从事开发工作,目前是SAP 成都S/ ... 
- [原创]同一个Tomcat,配置多个context、多个Host
			需求前提: 系统结束后,需要部署到服务器上. 目前只可以映射到一个固定IP的非80端口. 而server端和web端都要暴露到外网. 所以配置两个context,使得client应用不需要添加服务名, ... 
- sublime 挪移的第一层(插件的安装和使用)
			人总要坚持一些什么,故从今儿始,咱也开始写博客,不为成为大神,不为成为分享大师,只为让自己快活有成就感一些 1.sublime的安装 登录sublime官网 : http://www.sublimet ... 
- 更换HomeBrew源
			比较少用brew,只有之前安装Opencv的时候用过一次,后面有人问我怎么装,于是帮他研究了一下.MacOS的brew其实就是通过两个git仓库(brew和homebrew-core)来实现的源更新机 ... 
- BZOJ:4869: [Shoi2017]相逢是问候
			4869: [Shoi2017]相逢是问候 先说点正经的…… 显然做了有限次(我只知道是有限次,而且不会大,别人说是log次?)修改以后会达到不动点,即以后怎么修改都不变了. 然后就随便做了.(3个l ... 
- BZOJ 3105: [cqoi2013]新Nim游戏
			题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3105 题意是要取一些数使得剩余的数xor和的子集不为0 拟阵.求解极大线性无关组.贪心从大到小 ... 
- 最小生成树—prim算法
			最小生成树prim算法实现 所谓生成树,就是n个点之间连成n-1条边的图形.而最小生成树,就是权值(两点间直线的值)之和的最小值. 首先,要用二维数组记录点和权值.如上图所示无向图: int map[ ... 
- 总结过滤器,监听器,servlet的异同点,已经执行顺序。
			1.过滤器 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml ... 
- ReentrantLock与Condition构造有界缓存队列与数据栈
			通过ReentrantLock与Condition的设计,以数组为基础,可以实现简单的队列和栈的数据结构,临界阻塞的效果. ReentrantLock相对于synchronized比较大的一个区别是有 ... 
- hbase性能调优_表设计案例
			hbase性能调优案例 1.人员-角色 人员有多个角色 角色优先级 角色有多个人员 人员 删除添加角色 角色 可以添加删除人员 人员 角色 删除添加 设计思路 person表 ... 
