dom4j

使用Dom4j解析XML dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它. 对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。如今你可以看到越来越多的Ja 阅读详情

两个常见的解析xml的思路:
DOM:将文档中所有内容都封装成对象.读取时,将对象都加载到内存中.在内存中创建一棵dom树(记录对象间的关系).
优点: 方便的进行增删改查.
缺点: 会非常消耗内存.
SAX:事件驱动的.把xml文档的 读取过程,划分出5类事件.我们只要提供遇到每类事件做相应的策略实现.
优点:内存占用小.
缺点: 不能进行增删改的操作.

DOM:
    把所有内容封装成了5类对象.
        document
        Element
        Attribute
        Text
        Commons
        共同的父类
        node
        NOde的属性:
            自身属性:
                nodeType
                nodeName
                nodeValue
            导航属性
                找子节点的:firstChild lastChild childNodes
                找父节点的:parentNode
                找兄弟节点:nextSibling previousSibling
    获得Element的方式
        getElementById           ==> Document
        getELementsByTagName     ==> Document/Element
        getELementsByClassName   ==> Document/Element
        getElementsByName        ==> Document
    对于增删改的操作:
        创建一个元素: document.createElement
        添加一个元素: element.appendChild ,element.insertBefore
        替换一个元素: element.replaceChild
        删除一个元素: element.removeChild

dom4j中和了上述两种思想,操作xml简单方便,简单联系,源码中包含了相应的参考文档和需要的jar包,需要的可以在这里下载,
这里写图片描述

package com.qian.demo;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Dom4jUtil {

    //直接将xml文件已string的形式输出 saxReader.read()--document--document.asXML()
    public static void parseAsXml(String filename) throws DocumentException {
        InputStream is = Dom4jUtil.class.getClassLoader().getResourceAsStream(filename);

        SAXReader reader = new SAXReader();
        Document document = reader.read(is);
        String xmlContent = document.asXML();
        System.out.println(xmlContent);
    }

    //遍历XML文件
    public static void iterateXml(String filename) throws DocumentException{
        InputStream is = Dom4jUtil.class.getClassLoader().getResourceAsStream(filename);

        SAXReader reader = new SAXReader();
        Document document = reader.read(is);
        //1.获取根元素
        Element root = document.getRootElement();
        //2.迭代根元素以下的名字叫student的子元素
        for(Iterator<Element> it=root.elementIterator("student");it.hasNext(); ){
            Element studentEle = it.next();
        //3.获取student元素的number熟悉
            String number = studentEle.attributeValue("number");
        //4.获取student子元素的内容
            String name = studentEle.elementText("name");
            String age = studentEle.elementText("age");
            String sex = studentEle.elementText("sex");
            System.out.println("学号"+number+",姓名:"+name+",年龄:"+age+",性别:"+sex+"");
        }
    }

    //遍历XML文件
    public static void listXml(String filename) throws DocumentException{
        InputStream is = Dom4jUtil.class.getClassLoader().getResourceAsStream(filename);

        SAXReader reader = new SAXReader();
        Document document = reader.read(is);
        //1.获取根元素
        Element root = document.getRootElement();
        //2.迭代根元素以下的名字叫student的子元素
        List<Element> studentEleList = root.elements("student");
        for(Element studentEle:studentEleList){
            //3.获取student元素的number熟悉
            String number = studentEle.attributeValue("number");
            //4.获取student子元素的内容
            String name = studentEle.elementText("name");
            String age = studentEle.elementText("age");
            String sex = studentEle.elementText("sex");
            System.out.println("学号"+number+",姓名:"+name+",年龄:"+age+",性别:"+sex+"");
        }
    }


    //增加元素
    public static void addElement(String filename,Student stu ) throws DocumentException, IOException{
        InputStream is = Dom4jUtil.class.getClassLoader().getResourceAsStream(filename);

        SAXReader reader = new SAXReader();
        Document document = reader.read(is);

        //1.获取根节点
        Element root = document.getRootElement();

        //2.给根节点元素增加元素并且天津属性
        Element studentEle = root.addElement("student").addAttribute("number", stu.getNumber());
        //3 添加name age sex 子元素并添加子元素中的文本
        studentEle.addElement("name").addText(stu.getName());
        studentEle.addElement("age").addText(stu.getAge());
        studentEle.addElement("sex").addText(stu.getSex());

        //4将document对象会写到文件中,因为上面是把file.xml读到内存行程的dom树
        //4.1创建一个格式输出器
        OutputFormat format = OutputFormat.createPrettyPrint();
        //4.2设置格式输出器的编码也就是说依那种方式写数据
        format.setEncoding("utf-8");

        String realPath = "src/main/resources/"+filename;
        System.out.println(realPath);
        XMLWriter writer = new XMLWriter(new FileOutputStream(realPath),format);

        writer.write(document);
        writer.flush();
        writer.close();
    }

    //删除一个元素,元素的number为0009
    public static boolean deleteStudent(String filename,String number) throws Exception{
        InputStream is = Dom4jUtil.class.getClassLoader().getResourceAsStream(filename);

        SAXReader reader = new SAXReader();
        Document document = reader.read(is);
        // 1 获得根元素
        Element root = document.getRootElement();
        // 使用xpath找到我们需要元素
        // 定义xpath
        String xpath = "//student[@number='"+number+"']";
        Element studentEle = (Element) document.selectSingleNode(xpath);
        // 删除
        boolean b =  studentEle.getParent().remove(studentEle);

        // 回写
        String realPath = "src/main/resources/"+filename;
        System.out.println(realPath);

        XMLWriter writer = new XMLWriter(new FileOutputStream(realPath),
                OutputFormat.createPrettyPrint());

        writer.write(document);
        writer.close();

        return b;
    }

    //修改一个元素,元素的number为0009学生的age变为90;
    public static boolean updateStudent(String filename,Student stu) throws Exception{
        InputStream is = Dom4jUtil.class.getClassLoader().getResourceAsStream(filename);

        SAXReader reader = new SAXReader();
        Document document = reader.read(is);
        // 1 获得根元素
        Element root = document.getRootElement();
        // 使用xpath找到我们需要元素
        // 定义xpath
        String xpath = "//student[@number='"+stu.getNumber()+"']";
        Element studentEle = (Element) document.selectSingleNode(xpath);

        //修改
        studentEle.element("name").setText(stu.getName());
        studentEle.element("age").setText(stu.getAge());
        studentEle.element("sex").setText(stu.getSex());

        // 回写
        String realPath = "src/main/resources/"+filename;

        XMLWriter writer = new XMLWriter(new FileOutputStream(realPath),
                OutputFormat.createPrettyPrint());

        writer.write(document);
        writer.close();
        return true;
    }



    /*public static void main(String[] args) {
            try {
                parseAsXml("students.xml");
                //iterateXml("students.xml");
                System.out.println("==========================");
                Student stu = new Student();
                stu.setNumber("0009");
                stu.setName("张三");
                stu.setAge("20");
                stu.setSex("male");
                addElement("students.xml", stu);
                System.out.println("==========================");
                Thread.sleep(100);
                listXml("students.xml");
                //deleteStudent("students.xml", "0009");

                Student stu2 = new Student();
                stu.setNumber("0009");
                stu.setName("李四");
                stu.setAge("20");
                stu.setSex("female");
                updateStudent("students.xml", stu2);
            } catch (Exception e) {
                e.printStackTrace();
            }

    }*/
}
构网型逆变器下垂控制与电流限幅策略研究:理论、仿真与代码实现 随着分布式发电和微电网技术的快速发展,构网型(Grid-Forming, GFM)逆变器因其能够自主建立电压和频率参考、支撑弱电网及孤岛运行而受到广泛关注。本文提出并实现了一种基于下垂控制的构网型逆变器控制策略,将逆变器等效为受控电压源,通过L型滤波器接入配电网。在公共耦合点(PCC)处实时测量三相电压和电流,计算有功和无功功率,进而采用P-w和Q-V下垂控制生成内部频率和电压幅值,合成三相参考电压。针对故障情况下过电流问题,设计了一种自适应电流限幅模块:当电流幅值超过设定上限时,动态降低电压参考系数k_s 阅读详情

相关推荐

深入解析UVM寄存器模型:reg2bus与bus2reg的隐式调用机制

本文深入解析了UVM寄存器模型中reg2bus与bus2reg函数的隐式调用机制。通过追踪一次寄存器访问的完整旅程,揭示了这两个关键函数是如何在uvm_reg_map和uvm_reg_predictor中被框架自动调用的,从而在抽象的寄存器操作与具体总线事务之间完成转换,并实现镜像值的自动更新。掌握此机制是高效调试和灵活应用UVM寄存器模型的基础。

weixin_29211309的博客 438

71、(案例)使用dom4j 添加节点

要求:在第一个p1元素的末尾添加一个元素`nv 步骤: 创建解析器 得到document 得到根节点 获取到第一个p1:element方法 在p1下添加元素:addElement(“标签名称”)方法,返回一个Element 在元素中添加文本:setText 回写xml person.xml: <?xml version="1.0" encoding="UTF-8"?> <person> <p1> <name>zhangsan</name>

qq_37917691的博客 2394

热测试芯片(TTC)在ASIC热设计中的关键作用与应用

热测试芯片(TTC)是半导体热管理领域的重要工具,通过物理仿真技术精确测量芯片温度分布。其核心原理是利用金属膜电阻和二极管传感器阵列,实现微米级空间分辨率和毫秒级动态响应。在工程实践中,TTC能有效预防热岛效应、优化散热设计,特别适用于AI加速芯片、3D堆叠封装等先进半导体器件。相比传统热仿真软件,TTC提供更真实的温度数据,帮助工程师在流片前发现潜在热问题。随着1mm微型单元技术的突破,TTC已能检测0.3mm²微小区域的热变化,满足GaN/SiC等宽禁带半导体器件的测试需求。

weixin_33688840的博客 507

Dom4j完整教程

转载自:http://blog.youkuaiyun.com/chenweitang123/article/details/6255108 Dom4j的相关知识点.比较系统.     目录 1、DOM4J简介 2、XML文档操作1       2.1、读取XML文档:       2.2、获取根节点       2.3、. 新增一个节点以及其下的子节点与数据       2.4

每一次对问题的深究,总会收获新的知识和体会 3312

[Unity实战]热更新如何预防过度裁剪

假设你现在有一个游戏客户端,客户端只打包了入口场景,游戏场景都存放在了AB包。

u012587406的博客 1602

从0到1带大家搭建spring cloud alibaba 微服务大型应用框架(十一)spring-boot-admin 监控篇(2)springcloud 集成spring boot admin

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十一)spring-boot-admin 监控篇(2)springcloud 集成spring boot admin spring-boot-admin 服务端创建与集成入nacos spring-boot-admin 查看日志

峡谷电光马仔的博客 1378

DOM4J——强大而易用的XML解析器,我们不只是有数据库

DOM4J——强大而易用的XML解析器DOM4J一、DOM4J的导入使用二、认识一些关键角色三、快速开始3.1创建一个XML3.2读取XML节点(历遍和指定)3.3规范输出结尾欢迎关注我、一起共勉 DOM4J 是一个Java的XML API,是jdom的升级品,用来读写XML文件. dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件. 对于一些零碎的信息,使用数据库似乎有些大材小用,我们可以使

代码之狐的博客 4331

OpenClaw Manager Pro - 可视化管理工具

OpenClaw Manager Pro 是一个现代化的 Web 管理界面,用于管理多个 OpenClaw Gateway 实例。🎨美观的界面:深色主题,渐变设计,现代化 UI📡实时监控:WebSocket 实时推送状态和日志🔧完整管理:创建、编辑、删除、启动、停止 Gateway📊多渠道支持:飞书、Telegram、Discord、Slack、微信、钉钉🧩技能管理:可视化配置 61+ 个技能🌍跨平台:支持 macOS、Linux、Windows使用自定义模型系统会自动在中创建},

Maynor的博客 3084

DOM4J详解

Dom4j 概念:dom4j是一个Java的XML API,是jdon升级版,用来读写XML文件 DOM4j是一个易用,开源的库,用于XML,Xpath,XSLT, 它应用于Java平台,采用Java集合框架并完全支持DOM,SAX和JAXP DOM4j整合两种思想(SAX、DOM) 使用SAX的思想读取XML 使用DOM的思想,在内存中创建一颗对象关系树,可以参照之前学的DOM

熙哲数 3310

Python爬虫实战:使用最新技术爬取新浪新闻首页数据

本文详细介绍了三种爬取新浪新闻首页的技术方案,从简单的requests-html到强大的Playwright,再到分布式Scrapy架构。小规模爬取:requests-html或aiohttp方案需要JavaScript渲染:Playwright方案大规模分布式爬取:Scrapy-Redis方案。

2201_76125261的博客 1243

相机标定(六)—— 张正友标定法

相机标定一、相机标定的目的1. 相机的成像过程2. 相机标定的目的3. 畸变与畸变矫正二、张正友标定法简介三、标定相机内外参1. 求解内参和外参的积2. 求解内参矩阵3. 求解外参矩阵四、标定相机的畸变参数五、L-M算法参数优化六、相机标定的步骤七、源代码 一、相机标定的目的 1. 相机的成像过程 2. 相机标定的目的 3. 畸变与畸变矫正 二、张正友标定法简介 三、标定相机内外参 1. 求解内参和外参的积 2. 求解内参矩阵 3. 求解外参矩阵 四、标定相机的畸变参数 五、L-M算法参数优化 六、相机

weixin_41480034的博客 1万+

XML--04--解析-DOM4J 和 JDOM

DOM4J方式 dom4j是一个Java的第三方类库 XML API,类似于jdom,用来读写XML文件的。用于处理 XML、 XPath 和 XSLT,它基于 Java 平台,使用 Java 的集合框架,全面集成了 DOM,SAX 和 JAXP 对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j。 一、DO

时光里的博客 2801

华为od 面试八股文_Python_05_含答案

华为od 面试八股文_Python_05_含答案

MISAYAONE的博客 2554

【Dom4j】Dom4j完整教程详解

DOM4J是 dom4j.org 出品的一个开源XML解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型,就能使用。Dom:把整个文档作为一个对象。DOM4J 最大的特色是使用大量的接口。它的主要接口都在org.dom4j里面定义:Attribute定义了 XML 的属性。Branch指能够包含子节点的节点。

C__jx的博客 3万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Dom4j下载及使用Dom4j读写XML简介

sitinspring(如坐春风)原创,转载请注明作者及出处. 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/ 目前最新dom4j包下载地址:http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom

buaa_shang的专栏 2684

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

dom4j是什么

Dom4j是什么东西?     dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性

chenqiushi20005的专栏 1876

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

DOM4J实例,详细解说怎么用DOM4J编程

主要类:Demo1.java,一个DOM4J实例,详细解说怎么用DOM4J编程 package com.demo; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.util.List; import org.dom4j.Document; import org.d

ykblog.github.io 1894

DOM4J简介 

导读:      一、DOM4J简介    DOM4J是dom4j.org出品的一个开源XML解析包,DOM4J最大的特色是使用大量的接口,这也是它被认为比JDOM灵活的主要原因。它的主要接口都在org.dom4j这个包里定义:   Attribute 定义了XML属性   Branch Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个

青潭狼的专栏 1861

Dom4J读写XML

 dom4j读写xml文件 首先我们给出一段示例程序:import java.io.File;import java.io.FileWriter;import java.util.Iterator;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom

4246

Dom4j的使用

Dom4j的使用。

yuren_xia的博客 1370

dom4j解析XML

dom4j解析XMLdom4j 是一种解析 XML 文档的开放源代码 XML 框架,与 W3C DOM API 相比,使用 dom4j 所包含的解析器的好处是 dom4j 拥有本地的 XPath 支持.DOM 解析器不支持使用 XPath 选择节点.该解析器可以从 http://dom4j.org/ 获取. 它的网站中这样定义:Dom4j isan easy to use, ope

JonnyWei的专栏 3059

dom4j解析及生成XML

dom4j解析XML 1.概述 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面还可以找到一篇文章,对主流的Java X...

weixin_43611145的博客 1754

Dom4j

环境:Dom4j-1.6.1 Dom4j解析需要XML需要的最小类库为:dom4j-1.6.1.jarjaxen-1.1-beta-6.jar 目标:解析一个xml,输出所有的属性和元素值。 测试代码: XML文件:"1.0" encoding="GBK"?>      "1" sex="m">         zha

woaitiyu的专栏 1899

Dom4J操作Xml

使用Dom4j操作XML案例.实例,对比其他同层次框架.

陈伟堂的专栏 2282

java dom4j cdata_Dom4j完整教程

转自:https://blog.youkuaiyun.com/chenweitang123/article/details/6255108目录1、DOM4J简介2、XML文档操作12.1、读取XML文档:2.2、获取根节点2.3、.新增一个节点以及其下的子节点与数据2.4、写入XML文件2. 5、遍历xml节点2.6、创建xml文件2.7、修改节点属性2.8、删除节点2、XML文档操作22.1、Docu...

weixin_28717611的博客 1088

DOM4j包的入门

总结:https://www.cnblogs.com/crazylqy/p/4178336.html DOM4J是dom4j.org出品的一个开源XML解析包。Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。 DOM4J下载jar包:https://dom4j.github.io/      ...

1556
上一篇: Maven实战笔记
下一篇: SpringMvc+Hibernate+Spring个人介绍网站
Coder-Qian
博客等级 码龄11年 63粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值