快速业务通道

DOM4J介绍与代码示例 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
作为Visitor去访问许多Visitable。DOM4J中的Visitor模式只需要自定一个类实现Visitor接口即可。

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())

Visitor接口提供多种Visit()的重载,根据XML不同的对象,将采用不同的方式来访问。上面是给出的Element和Attribute的简单实现,一般比较常用的就是这两个。VisitorSupport是DOM4J提供的默认适配器,Visitor接口的Default Adapter模式,这个模式给出了各种visit(*)的空实现,以便简化代码。

注意,这个Visitor是自动遍历所有子节点的。如果是root.accept(MyVisitor),将遍历子节点。我第一次用的时候,认为是需要自己遍历,便在递归中调用Visitor,结果可想而知。

5.使用ElementHandler

XmlHandler.java

import java.io.File; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.ElementHandler; import org.dom4j.ElementPath; import org.dom4j.io.SAXReader; public class XmlHandler {    public static void main(String[] args) {     SAXReader saxReader = new SAXReader();     File file = new File("students.xml");     try {       // 添加一个ElementHandler实例。       saxReader.addHandler("/students/student", new StudentHandler());       saxReader.read(file);     } catch (DocumentException e) {       System.out.println(e.getMessage());     }    }    /**    * 定义StudentHandler处理器类,对<student>元素进行处理。    */    private static class StudentHandler implements ElementHandler {     public void .Start(ElementPath path) {       Element elt = path.getCurrent();       System.out.println("Found student: " + elt.attribut.ue("sn"));       // 添加对子元素<name>的处理器。       path.addHandler("name", new NameHandler());     }     public void .End(ElementPath path) {       // 移除对子元素<name>的处理器。       path.removeHandler("name");     }    }    /**    * 定义NameHandler处理器类,对<student>的<name>子元素进行处理。    */    private static class NameHandler implements ElementHandler {     public void .Start(ElementPath path) {       System.out.println("path : " + path.getPath());     }     public void .End(ElementPath path) {       Element elt = path.getCurrent();       // 输出<name>元素的名字和它的文本内容。       System.out.println(elt.getName() + " : " + elt.getText());     }    } }

6.使用XSLT转换XML

这里必须使用JAXP的支持。

import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import org.dom4j.Document; import org.dom4j.io.DocumentResult; import org.dom4j.io.DocumentSource;    ……    public Document styleDocument(Document document, String stylesheet)       throws Exception {     // load the transformer using JAXP

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号