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

相关文章

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在