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

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模