`
zhangwei_david
  • 浏览: 476055 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

dom4j的使用

    博客分类:
  • Java
 
阅读更多

  

-Node为所有的dom4jXML节点定义了多态行为;
 
-Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为;
|-Element 定义XML 元素;
|-Document定义了XML文档;
 
-DocumentType 定义XML DOCTYPE声明;
-Entity定义 XML entity
-Attribute定义了XML的属性;
-ProcessingInstruction 定义 XML 处理指令;
 
-CharacterData是一个标识接口,标识基于字符的节点。如CDATAComment, Text
|- CDATA 定义了XML CDATA 区域;
|-Text 定义XML 文本节点;
|- Comment 定义了XML注释的行为;
 
创建一个XML
<?xml version="1.0" encoding="UTF-8"?>

<!--dom4j 示例用法--><?my dom4j demo?>

<ACCOUNTS author="zhangwei" size="2">
  <TAXACCOUNT>
    <NAME>*三</NAME>
    <USERID>2088123456789</USERID>
    <LOGINID>zha***@163.com</LOGINID>
    <IS_CERTIFY/>
    <MEMO><![CDATA[<TEST DOM4J>]]></MEMO>
  </TAXACCOUNT>
  <TAXACCOUNT>
    <NAME>*四</NAME>
    <USERID>2088123456790</USERID>
    <LOGINID>lis***@163.com</LOGINID>
    <MEMO><![CDATA[<TEST DOM4J>]]></MEMO>
    <IS_CERTIFY/>
  </TAXACCOUNT>
</ACCOUNTS>
 
 /**
     *
     * @return
     */
    private Document buildDocument() {
        /**
         * 写数据
         */

        Document doc = DocumentFactory.getInstance().createDocument();
        // 设置XML的字符编码
        doc.setXMLEncoding("UTF-8");
        // 增加注释
        doc.addComment("dom4j 示例用法");

        doc.addProcessingInstruction("my dom4j", "demo");
        // 增加节点元素
        Element root = doc.addElement("ACCOUNTS");
        //设置属性
        root.addAttribute("author", "zhangwei");
        root.addAttribute("size", "2");
        // 增加子节点,并设置节点值
        Element taxAccount = root.addElement("TAXACCOUNT");
        taxAccount.addElement("NAME").setText("*三");
        taxAccount.addElement("USERID").setText("2088123456789");
        taxAccount.addElement("LOGINID").setText("zha***@163.com");
        taxAccount.addElement("IS_CERTIFY");

        // 设置一个<![CDATA[]]>数据
        taxAccount.addElement("MEMO").addCDATA("<TEST DOM4J>");

        Element second = root.addElement("TAXACCOUNT");
        second.addElement("NAME").setText("*四");
        second.addElement("USERID").setText("2088123456790");
        second.addElement("LOGINID").setText("lis***@163.com");

        // 设置一个<![CDATA[]]>数据
        second.addElement("MEMO").addCDATA("<TEST DOM4J>");
        second.addElement("IS_CERTIFY");
        return doc;
    }
 将documnet写入到文件中
    private void writeXml2File(String fileName, Document document) {
        XMLWriter writer = null;
        try {
            OutputFormat format = OutputFormat.createPrettyPrint();
            writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8"),
                format);

            writer.write(document);
        } catch (Exception e) {

        } finally {
            try {
                if (writer != null) {
                    writer.close();
                }
            } catch (Exception e) {

            }
        }
    }
  使用访问者模式读取XML
    @Test
    public void visitorXml() throws Exception {
        SAXReader reader = new SAXReader();
        Document document = reader.read("D://dom4j.test.xml");
        document.accept(new VisitorSupport() {

            /**
             * @see org.dom4j.VisitorSupport#visit(org.dom4j.Attribute)
             */
            @Override
            public void visit(Attribute node) {
                System.out.println("attribute:" + node.getName() + ":" + node.getData());
            }

            /**
             * @see org.dom4j.VisitorSupport#visit(org.dom4j.CDATA)
             */
            @Override
            public void visit(CDATA node) {
                System.out.println("cdata " + node.getStringValue());
            }

            /**
             * @see org.dom4j.VisitorSupport#visit(org.dom4j.Comment)
             */
            @Override
            public void visit(Comment node) {
                System.out.println("comment:" + node.getStringValue());
            }

            /**
             * @see org.dom4j.VisitorSupport#visit(org.dom4j.Document)
             */
            @Override
            public void visit(Document document) {
                super.visit(document);
            }

            /**
             * @see org.dom4j.VisitorSupport#visit(org.dom4j.Element)
             */
            @Override
            public void visit(Element node) {
                System.out.println("node " + node.getName() + ":" + node.getStringValue());
            }

            /**
             * @see org.dom4j.VisitorSupport#visit(org.dom4j.Text)
             */
            @Override
            public void visit(Text node) {
                System.out.println("text  :" + node.getStringValue());
            }

        });
    }
  标准JAVA迭代器模式读取XML
  /**
     * 标准的JAVA迭代模式
     *
     * @throws DocumentException
     */
    @SuppressWarnings("unchecked")
    @Test
    public void readXml() throws DocumentException {
        /**
         * 读数据
         */
        SAXReader reader = new SAXReader();
        Document document = reader.read("D://dom4j.test.xml");
        // 获取根节点
        Element root = document.getRootElement();
        // 遍历根节点下的所有节点
        for (Iterator<Element> it = root.elementIterator(); it.hasNext();) {
            Element e = it.next();
            readElement(e);
        }
    }

    private void readElement(Element element) {
        @SuppressWarnings("unchecked")
        Iterator<Element> ieson = element.elementIterator();
        if (ieson.hasNext()) {
            while (ieson.hasNext()) {
                Element elementSon = ieson.next();
                readElement(elementSon);
            }
        } else {
            System.out.println("---read---" + element.getName() + ":" + element.getText());
        }
    }
 
 
8
4
分享到:
评论

相关推荐

    dom4j使用手册

    dom4j使用手册;

    dom4j使用

    **DOM4J使用详解** DOM4J是一个Java库,它为XML处理提供了强大的功能,包括文档构建、查询、转换和事件处理。作为一个开源项目,DOM4J被广泛应用于各种Java应用中,尤其在处理大型XML文档时,其性能优势明显。 DOM...

    dom4j使用简介

    **DOM4J使用简介** DOM4J 是一个强大的 Java 库,专为处理 XML 文档而设计。它提供了丰富的 API,使得在 Java 中解析、创建、修改 XML 文件变得简单高效。DOM4J 不仅支持 DOM(文档对象模型)和 SAX(简单API for ...

    dom4j使用教程+dom4j.jar

    ### 四、DOM4J查询XML 1. **XPath查询**: DOM4J支持XPath表达式进行复杂查询。首先,需要创建`XPath`对象,并使用`compile()`方法编译XPath字符串,然后调用`evaluate()`方法执行查询。 ```java XPath xpath = ...

    dom4j使用与jar包

    **DOM4J使用与JAR包** DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了丰富的API,使得XML的读取、创建、修改和解析变得异常简便。在这个主题中,我们将深入探讨DOM4J的核心功能以及如何在Java项目中使用...

    DOM4J使用详解

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了一种灵活且高效的方式来解析、创建、修改和操作XML文档。DOM4J不仅支持DOM模型,还支持SAX和JAXP解析器,使得开发者可以根据需要选择不同的解析策略。 1. ...

    Dom4j 使用指南.rar

    **Dom4j 使用指南** Dom4j 是一个非常流行的Java库,用于处理XML文档。它提供了灵活、高效的方式来解析、创建、操作XML内容。对于学习XML的开发者来说,Dom4j是一个不可多得的工具,因为它的API简洁易用,功能强大...

    dom4j 简单教程

    ### DOM4j 使用详解 #### 一、简介 DOM4j是一种用于处理XML文档的Java库,它提供了灵活且高效的方式来解析、修改和创建XML文件。相比于标准的DOM和SAX API,DOM4j提供了更加简洁易用的API,使得开发者能够更轻松地...

    XSD使用dom4j校验XML

    1. 加载XSD文件:使用DOM4J的DocumentHelper类的parse方法,传入XSD文件的路径,得到一个SchemaFactory对象。 ```java SchemaFactory schemaFactory = DocumentHelper.createSchema(new File("path_to_xsd_file.xsd...

    DOM4J 使用简介.pdf

    #### 四、DOM4J 的应用场景 DOM4J因其出色的性能和灵活性,被广泛应用于各种场景中,包括但不限于: - **Web服务**:在构建RESTful Web服务时,DOM4J可用于解析和生成XML响应。 - **配置管理**:许多软件系统使用...

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...

    dom4j中XPath用法

    要使用DOM4J的XPath功能,首先需要引入DOM4J库和JAXP(Java API for XML Processing),后者提供了XPath的实现。在Java项目中,这通常通过添加对应的依赖完成。例如,在Maven项目中,可以在pom.xml文件中加入以下...

    Dom4j使用简介

    Dom4j使用简介,日志 开发java必看,初级高级开发必看

    dom4j使用教程

    下面将详细讲解DOM4J的主要特性和使用方法。 ### 1. DOM4J的基本概念 - **Document**: XML文档的根节点,表示整个XML结构。 - **Element**: 表示XML文档中的元素,每个元素都有一个标签名,可以包含属性和子元素。...

    DOM4J 的使用

    DOM4J 的使用 DOM4J 是一个开源的 XML 解析包,由 dom4j.org 出品,应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM、SAX 和 JAXP。DOM4J 的主要特点是使用大量的接口,所有主要接口都在 org.dom4j 里面定义...

Global site tag (gtag.js) - Google Analytics