Dom4j解析【开发中常用】

2024-05-23 07:18
文章标签 开发 解析 常用 dom4j

本文主要是介绍Dom4j解析【开发中常用】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需要导包:dom4j-1.6.1.jar   jaxen-1.1-beta-6.jar

------读取---------
package  com .  atguigu . xml . dom4j ;

import  java .  util . Iterator ;
import  java .  util . List ;

import  org .  dom4j . Document ;
import  org .  dom4j . Element ;
import  org .  dom4j . io . SAXReader ;

public  class  Dom4jParse  {
    
     // ①查找某一个节点  :  查找 id  007 的学员的所有信息
     public  static  void  main ( String []  args )  throws  Exception  {
        
          //1. 获取解析器对象
        SAXReader reader  =  new  SAXReader  ();
        
          //2. 获取 Document  对象
        Document document  =  reader . read (  "XML/students.xml" );
        
          //3. 获取 XML  文档的根节点对象
        Element rootElement  =  document  . getRootElement  ();
        
          //4. 获取所有的 student  元素对象,并进行遍历
        List  < Element  >  stuList  =  rootElement . elements (  "student" );
        Iterator  < Element  >  iterator  =  stuList  . iterator  ();
          while  ( iterator  . hasNext  ())  {
    
            Element stuEle  =  iterator  . next  ();
              //5. 获取每一个 student  元素对象的 id 属性值
            String idStr  =  stuEle  . attributeValue  ( "id" );
            
              //6. 检测 id  属性值是否等于  007
              if ( "007"  . equals  ( idStr  ))  {
                  //7. 如果等于则获取 name 值和  age
                Element nameEle  =  stuEle  . element  ( "name" );
                Element ageEle  =  stuEle  . element  ( "age" );
                String nameStr  =  nameEle  . getText  ();
                String ageStr  =  ageEle  . getText  ();
                
                System  . out  . println  ( "name=" + nameStr + " age=" + ageStr );
                
              }        
            
          }        
     }

}


------写入-----

package  com .  atguigu . xml . dom4j ;

import  java .  io . FileWriter ;
import  org .  dom4j . Document ;
import  org .  dom4j . Element ;
import  org .  dom4j . io . OutputFormat  ;
import  org .  dom4j . io . SAXReader ;
import  org .  dom4j . io . XMLWriter ;

public  class  Dom4jEdit  {
    
     // ②添加某一个节点  : " 姓名:张三丰, id: 武当  , 年龄 :108
     public  static  void  main ( String []  args )  throws  Exception  {
        
          //1. 获取 Document  对象
        SAXReader reader  =  new  SAXReader  ();
        Document document  =  reader . read (  "XML/students.xml" );
        
          //2. 构建并添加节点内容
          /*
        <student id="  武当 ">
            <name>  张三丰 </name>
            <age>108</age>
        </student>
        */
          // ①获取根节点,在根节点下,添加  student 元素 <student></student>
          // ②在新 student  中添加 id 属性  <student id=" 武当 "></student>
          // ③在新 student  下面添加 name 元素  <student id=" 武当 "><name></name></student>
          // ④在新 name  下添加文本 <student id=" 武当  "><name> 张三丰 </name></student>
          // ⑤在新 student  下面添加 age 元素  <student id=" 武当 "><name>  张三丰 </name><age></age></student>
          // ⑥在新 age  下添加文本 <student id=" 武当  "><name> 张三丰 </name><age>108</age></student>
        Element rootElement  =  document  . getRootElement  ();
        rootElement
              . addElement  ( "student" )
              . addAttribute  ( "id" ,  "  武当 " )
              . addElement  ( "name" )
              . addText  ( " 张三丰  " )
              . getParent  ()
              . addElement  ( "age" )
              . addText  ( "108" );
        
          //3. 将更新的内容写入 XML 文档
          // ①获取 XMlWriter  对象
          // 为了使 XML  节点内容写入后保持较好的格式,可以传入一个格式对象
        OutputFormat format  =  OutputFormat . createPrettyPrint ();
        XMLWriter writer  =  new  XMLWriter  ( new  FileWriter ( "XML/studentsNewPretty.xml" ),  format );
        
          // ②将 Document  对象写入
        writer  . write  ( document  );
        
          // ③关闭 XMlWriter  对象
        writer  . close  ();  
     }
}



这篇关于Dom4j解析【开发中常用】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/996175

相关文章

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码