xml解析,sax解析,增删改查

Ardupilot源码框架解析:从零开始搭建你的无人机飞控系统(基于Pixhawk平台) 本文深入解析Ardupilot源码框架,指导读者从零开始搭建基于Pixhawk平台的无人机飞控系统。内容涵盖环境配置、源码结构分析、固件编译刷写、定制化开发及高级功能扩展,为开发者提供全面的技术指导,助力快速掌握开源飞控开发核心技能。 阅读详情

一、
1、XML有三种解析方式:DOM SAX STAX
2、XML的作用(企业应用):存储数据、配置文件、传输数据。
存储和传输数据经常一起使用,XML数据通常由程序生成的,用程序解析XML(XML一般不加约束)
配置文件单独使用(通常会加约束)
3、DOM
全称为:Document Object Model文档对象模型。
DOM的解析思想 :将整个XML数据读取到内存中,在内存中形成文档树形结构,
对内存中文档树形结构进行操作。
优点:API简单。因为一次性加载整个文档,文档所有数据都在内存中,所以简便易用 处理
较方便。可频繁修改XML文件内容(即可回写)。
缺点:需将整个XML文档加载到内存,消耗系统资源。速度较慢。当XML文档过大时,会导致
无法全部加载进内存,内存溢出问题。
**DOM是官方提供的XML解析标准,由W3C制定 。
4、SAX
全称为:Simple API for XMl简单XML解析API。
SAX解析思想:为解析器绑定回调程序Handler , 解析器读取xml文件,触发相应事件,
自动调用handler中对应事件方法
优点:SAX是轻量级的接口,解析速度快,无须占用太多内存资源。
缺点:SAX每次都要从头到尾遍历节点,修改不易实现。编程复杂,如在内存中不保留读取的数据,将无法回写。
注:如果SAX、STAX在内存中边读边保存数据的话 ,就类似于DOM了。
**SAX是民间XML解析标准,来自XML社区。
**采用“推”模式,PUSH。
5、STAX
全称是:Streaming API for XML ,XML解析流API。
STAX解析思想 :提高SAX模式解析效率。亦为边读边处理。
**采用“拉”模式,PULL。
*****以上三种解析方式:性能比较::STAX >SAX >DOM
6、什么是推模式?什么是拉模式?
PUSH:是以服务器为主,控制操作流程模式。
当你将文档和处理程序 交给解析器,解析器自动进行解析,调用相应事件处理方法 (该过程不由你自己控制)。
服务器主动向客户端发送信息,发送过程中客户端不能干预 。
PULL:是以客户端为主,控制操作流程模式。

********
JAXP:
全称是Java API for XML Processing。
它是一套API。DOM、SAX、STAX只是XML的解析思想。JAXP是DOM、SAX、STAX的API具体实现。
由SUN提供 ,在JDK 6.0以后全面支持DOM、SAX、STAX三种解析方式。
XML PULL:拉模式解析XML框架,内置集成Android手机内部 。
DOM4J:DOM解析方式框架,开源。在企业端JavaEE 软件开发中。为最流行开发框架。
javax.xml核心xml解析API,是DOM、SAX、STAX公用API。
org.w3c.dom 与DOM解析相关具体API
org.xml.sax 与SAX解析相关具体API

整个XML会被解析为树形结构,元素、属性、文本,都会被解析为 Node节点 。
********
7、DOM解析入门:
(一)
(1)创建解析器工厂
DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();
(2)根据解析器工厂获得解析器
DocumentBuilder documentBuilder=builderFactory.newDocumentBuilder();
(3)解析器读取XML文档进行解析,为Document对象(文档对象,代表整个XML文档)
Document document=documentBuilder.parse("test.xml");
(4)获得document文档后,就可以对它进行操作了。
例如 :可以通过getElementsByTagName查找指定名称元素NodeList。
NodeList nodeList=document.getElementsByTagName_r("name");
然后遍历集合获得每个Node节点。
for(int i=0;i
Element node=(Element)nodeList.item(i);
再通过Node的getTextContent获得节点文本内容 。
System.out.println(node.getTextContent());
}

(二)**node节点公共API中,
getNodeName()返回节点的名称
getNodeType()返回节点的类型
getNodeValue()返回节点的值

(三)**XML 提供数据只能通过两种情况 :
第一种 xml解析技术 第二种
* 获得元素文本子节点内容 获得元素后 element.getTextContent() element.getFirstChild().getNodeValue()
* 获得元素属性值 获得元素后 element.getAttribute(属性名)

(四)节点元素查询时
1、全局查找缩小范围
2、相对位置查找 父亲 儿子 兄弟 获得相对节点元素内容
注意事项
1、查询元素子节点时,注意回车换行
2、Document 类中 getElementById --- 使用时 xml文档必须有约束 DTD默认加载 , Schema需要编程

(五)对XML 进行增删改查 ---- 增加 、修改 、删除
* 对内存XML 文档修改后,回写到xml 文件中

添加节点 1、创建目标节点 document.createXXX 2、找到合适位置插入 父节点.appendChild
修改节点 1 修改文本内容 element.setTextContent(value) 2 修改属性 element.setAttribute(name,value)
删除节点 1 获得要删除节点o 2. o.getParentNode().removeChild(o);
**(详细代码参见代码附录)

8、JAXP SAX 解析API
原理见上。
事件
startDocument 文档开始事件
startElement 元素开始事件
characters 文本元素事件
endElement 元素结束事件
endDocument 文档结束事件

对于SAX编程不要求掌握,了解原理就可以了。

在startElement 中 获得 开始元素是什么?qName 获得开始标签属性内容 ?attributes.getValue("属性名称")
在characters 中 获得读取到文本元素是什么 ? new String(ch,start,length)
在endElement 中 获得当前结束元素是什么 ?qName

9、XML Pull 解析器
(一)为开源框架 ,使用STAX类似拉模式解析方式。Android手机系统内置 工具类库。
** 从事Android开发 。因为内置,无需下载任何jar包 ---- 如果从事JavaEE开发需要单独下载pull解析器类库。
**在pull 解析器官网上,看到pull解析器 API接口 。
**XNI2 XmlPull 、XPP3/MXP1 、kXML2 都是 pull解析器 接口API 的实现
**课程采用 xpp3 这套 pull解析器实现。
(二)什么是jar 包?
很多开源框架,会将class文件用zip格式进行压缩 获得压缩包。扩展名 jar (jar包)
(三)XML PULL 快速入门

(1)、去官网下载 zip 压缩包(xpp3-1.1.3.4.C_all.zip),解压缩获得jar包(xpp3-1.1.3.4.C.jar)。
(2)、在当前工程目录下新建lib文件夹,将该jar包放到lib目录下。
(3)、右击jar包,Add to build path 将jar包添加到 当前工程 build path.

事件
start document
start tag
text
end tag
end document

**使用pull解析器生成XML
(1)、获得解析器工厂
XmlPullParserFactory parserFactory = XmlPullParserFactory.newInstance();
(2)、通过解析器工厂 获得序列化程序对象 XmlSerializer
XmlPullParser parser = parserFactory.newPullParser();
(3)、设置 输出XML文件 位置
(4)、开始写 存在5个方法写你需要内容

*** 能力: 将List中数据 序列化到一个XML文件中 。

10、XML PULL 解析方式 与 SAX push 最大区别?
程序员可以自己控制解析过程 。
用push 自动执行所有解析事件,使用pull 程序员可以控制只执行关注的那些事件,pull解析方式效率比push方式更高。

**获得元素属性 ----- 在元素开始时 ,通过parser.getAttributeValue(null,属性名称);
获得元素内部文本内容 ----- 在元素开始时, parser.nextText();

11、XML PULL 对xml文件 进行CURD (Create Update Read Delete)
* 使用pull 读取xml,读取内容不释放,在内存中保留 ---- DOM 类似
* 解析XML --- List 序列化 List --- XML
* 使用pull 进行增删改查 --- 读取xml全部数据保存内存list对象,对内存list对象进行增删
改查

YOLOv11 TensorRT极致加速:C++部署性能优化完全指南 购买即可解锁300+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,别人有的本专栏也有! 阅读详情

相关推荐

优快云余额充值前必读:这5个隐藏条款,90%的开发者都忽略了(附iOS内购避坑指南)

本文揭示了优快云余额充值中90%开发者忽略的5个隐藏条款,包括不可退款规则、iOS内购限制、账号安全责任等关键内容,特别提供了iOS内购避坑指南,帮助开发者避免资金损失和账号风险。

weixin_26765287的博客 148

XML文档的增删改查

创建一个XML文档 查: 解析步骤: 1.创建解析器工厂,通过解析器工厂获得解析器,解析器解析XML文件得到document对象,以该对象为起点操作XML 2.调用document.getElementByTagname(),方法获得节点集合,遍历节点集合通过item()方法获得Node对象,将对象强转成Element元素节点,通过getAttribute()方法获得属性 3.调用元素节点的getChidNodes()方法获得元素节点的子节点集合,遍历子节点集合获得每一个子节点,调用子节点..

weixin_72940499的博客 1216

09、Flutter FFI Dart Native API

本文介绍了 Dart Native API 的基本用法,解决了 Dart 与 C 异步通讯的问题

eieihihi的专栏 4400

SAX解析及修改xml

修改xml,通常不会全篇修改,只修改某些关键节点 解析 用到的实体类 public class RadarSetEntity { private String signSpeed; private String speedLimit; private String bigCarSignSpeed; private String bigCarSpeedLimit; private String radarConstantCorrection; public S

TaoYuan 2008

总结:知识图谱KG+大模型LLM

知识图谱KG+大模型LLM

安静的软件工程师 4212

【Altium designer】如何添加过孔阵列

按下图1指示,执行【Tool】菜单栏下【Via Stitching/Shielding】选项卡中的【Add Stitching to Net...】选项 图1 “添加过孔阵列”选项 点击【Add Stitching to Net...】选项后,会跳出一个窗口,让我们设置过孔阵列的参数信息,如下图2所示。 图2 过孔阵列参数设置 过孔阵列区域:勾选该选项框,即可绘制多边形区域; 过孔内径与焊盘直径:比如内径 【Hole Size】设为12mil,焊盘直径【Diameter】设为24mil; .

夜半少年的博客 2万+

用SAX实现修改xml文件内容

背景 在久其工作,NP资产管理系统,jmx文件对应Hibernate的实体类,jmx文件实际上就是一个xml文件。每次新建一个实体类(对NP资产系统而言,就是新建一个jmx文件),都需要一一替换文件中的以下两个元素的uuid: <id>4371b121-aa9d-4942-8d01-4119b1dbad58</id> <model:id>6b89a8d9-51d2-4499-a7a1-bf56ff7f9a66</model:id> 一直采用的方法是用网页uu

wjval的博客 1260

AutoSAR系列讲解(实践篇)7.3-AppL在Dev中的配置(下)

接着讲解Dev中剩下的几个定义项

雪云飞星的博客 1万+

dom4j 对xml节点的增、删、改 操作

  需求:      在jsp页面上展示树形结构,当选中某个节点时,可以新增该节点的子节点、删除该节点、修改该节点信息。      操作节点的时候,既操作数据库,也操作xml文件。先操作数据库,后操作xml文件。      如果操作数据库失败,则不再操作xml文件。   说明:       1. menuNo 是唯一的;       2. 节点层次只有一层,但是各个节点之间有关...

二楼后座 1159

CentOS 7 Linux yum 安装 Docker,解决 Docker 镜像拉取失败问题

本文详细介绍了在 CentOS 7 系统上通过 yum 安装 Docker 的完整流程,包括卸载旧版本、配置阿里云国内镜像源、安装 Docker 及其组件、设置日志限制等关键步骤。针对国内用户常见的 Docker 镜像拉取失败问题,提供了两种实用解决方案:配置镜像加速器或通过代理访问官方源,并附带验证方法与排错指南,帮助读者高效完成 Docker 环境部署。

寒水馨 · 轻量级技术文档 · hanshuixin.org 1718

Prompt进阶2:LangGPT(构建高性能Prompt策略和技巧)--最佳实践指南

Prompt进阶2:LangGPT(构建高性能Prompt策略和技巧)--最佳实践指南

丨汀、的博客 2651

XML SAX DOM解析实现增删改查 JSON介绍 DOM4j的介绍和用法实例

文章目录XML(EXtensible Markup Langusge)特点用法声明注释语法注意XML中的转义符列表:注意命名冲突问题解析XML技术SAXDOM解析常用接口DOM解析XNL文件的步骤保存XML文件的步骤JSON(JavaScript Object Notation)语法FastjsonDOM4J常用接口 XML(EXtensible Markup Langusge) 可扩展标记语言 特点 1、XML与操作系统、编程语言的开发平台无关 2、实现不同操作系统之间的数据交换 ##作用 1、数据交

weixin_45279447的博客 676

开放平台实现安全的身份认证与授权原理与实战:使用OAuth 2.0实现授权码模式

作者:禅与计算机程序设计艺术 1.背景介绍 随着互联网应用的飞速发展,各种网站、App、小程序等都将逐渐向用户提供了丰富的功能和服务。在这些应用中,用户通常需要登录才能使用这些服务,这就涉及到用户信息的安全问题。如果用户的信息被泄露或篡改,那么可能造成严重后果。因此,为这些应用提供安全且健壮的身份验

AI天才研究院 494

使用dom4j解析、增删改xml文档,xPath技和SAX解析

一、dom4j解析xml 二、删改xml文档 三、xPath技术 一、dom4j解析xml xml 是一种可可扩展标记语言,用于标记电子文件使其具有结构性的标记语言。标记指计算机能理解得信息符号,通过此种标记,计算机之间可以处理包含各种的信息。也可以用来标记数据,定义数据类型,是一种允用户对自己的标记语言进行定义的源语言。xml文件除了给开发者看,更多情况是程序读取xml文件的内容xml解

我是沈君哦! 1078

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

XML解析(增删改查)-DOM解析(Jaxp、DOM4J实现DOM解析)、SAX解析(Jaxp实现SAX解析)

package com.shuhuadream.test; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import

麦客子 462

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 增删改查错误,Android利用SAX对XML进行增删改查操作详解

前言解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析。DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了。优点:整个文档读入内存,方便操作:支持修改、删除和重现排列等多种功能。缺点:将整个文档读入内存中,保留了过多的不需要的节点,浪费内存和空间。使用场合:一旦读入文档,还需要多次对文档进行操作,并且在硬件资源充足的...

weixin_42410566的博客 268

STM32F407中文手册

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

XML解析方式DOM与SAX简析及两者的区别

@[TOC]简介XML解析方式DOM与SAX及两者的区别 1.DOM解析 (基本信息:DOM简介) 1.1 DOM 1)DOM全称 Document Object Model,文档对象模型。 2)DOM 是 W3C(万维网联盟)的标准; 3)DOM 定义了访问 HTML 和 XML 文档的标准: W3C 文档对象模型 (DOM) 是中立于平台和语言的接口, 它允许程序和脚本动态地访问和更新文档的内容、结构和样式。” 4)W3C DOM 标准被分为 3 个不同的部分: 核心 DOM - 针对任何结构化文档的标

LiuNian_LiuLian的博客 670

DOM解析与SAX解析对比

DOM解析与SAX解析对比 DOM解析 SAX解析 原理:一次性加载xml文档,不适合大容量的文件读取 原理:加载一点,读取一点,处理一点,适合大容量文件的读取 DOM解析可以任意进行增删改查 SAX解析只能读取 DOM解析任意读取任何位置的数据,甚至往回读 SAX解析只能从

QQ1012421396的博客 606

XML解析的两种解析方式:DOM和SAX

DOM:(Document Object Model,即文档对象模型),是W3C组织推荐的解析XML的一种方式 SAX:(Simple API for XML)不是官方标准,但他是XML社区事实上的标准,几乎所有的XML解析器都支持它) DOM是先把所有的XML文档读到内存中,然后依次简历Document对象,如下图: 而SAX使逐步往下读取XML的,所有内存消耗小,但是SAX只适合

2448

xml的两种解析方式:sax,dom4j

两种解析方式的优缺点:     sax解析:优点:不需要读取整个文件,并且将其储存在内从中,不耗费内存资源,才用触发监听的方式,文件读到哪里触发相应方法。         缺点:不能反复调用,每次解析时都要从头解析,只能进行查询     dom4j:优点:只需解析一次,即可反复调用。能够进行增删改查。          缺点:必须先整体的解析一次,拿到Document对象,才能进行操作.耗

茅屋 1235

关于XML文档解析(DOM和SAX)

DOM解析方式是将整个XML文档以document形式构架在内存中,当XML文档很大时,可能会造成OOM(内存溢出).而SAX则是一行行的去解析的,速度很快. DOM解析: 1,通过DocumentBuilderFactory创建DOM解析工厂; 2,由工厂获取DocumentBuilder解析器对象; 3,通过解析器将XML转换成Document对象 注:在对XML文档进行修改后,需要

知耻而后勇。 695

XML与Java解析

Dom4J是一个易用的、开源的库,用于XML,XPath和XSLT。Document接口:Document对象代表整个XML文档,它也是对XML文档进行操作的起点。javax.xml.parsers:解析器工厂工具,程序员获得并配置特殊的解析器。org.w3c.dom:W3C推荐的用于使用DOM解析XML文档的接口。1、DOM 基于XML树结构、比较耗资源、适用于多次访问XML。org.xml.sax:用于使用SAX解析XML文档的接口。Element接口:代表XML文档中的标签元素。

qq_50437196的博客 1600

心得5--XML编程(CRUD)--dom、sax解析案例分析

一:DOM解析XMl文档,运用DOM解析方法对XML文档增删改查,该技术要把XMl文档全部读取完存在内存中然后再解析,速度比较慢,而且当改文档内存过大时,会使内存溢出,系统崩溃 packagecom.dom; importjava.io.FileOutputStream; importjava.io.IOException; importjavax.xml.parsers.Document

ykblog.github.io 1660

2.xml解析-原生

XML解析技术 1 初涉 1.1 简单介绍 ​ 可扩展性标记语言,详情请百度。 1.2 语法规则 所有的标记类引用的注释: xml是文本类型的语言,文本后缀名必须是.xml Xml文件必须有声明区和数据区组成 Xml中有且只有一个根标签 属性名 标签名区分大小写 属性名 标签名不要以数字开头 标签之间可以合理嵌套: 属性值 可以写在双引号(规范) 单引号 或者不写引号 浏览器内置有解析标记类语言的程序 通过浏览器执行xml代码 展示: 1.3 字符实体 ​

qq_44739500的博客 388

XML解析的两种方式区别

XML解析的两种方式区别 1.DOM解析: 需要xml完全加载进内存才可以操作 可以方便进行增删改查操作,耗费内存 2.SAX解析 逐渐扫描xml文件,当遇到标签时触发解析处理器,不需要加载进内存 只能读取,无法进行增删改查 DOM解析 具体解析步骤如下: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();//获得解...

YaMokey的博客 242

xml编程:利用java程序去增删改查(CRUD)xml中的数据

2种解析思想 1. dom解析: 优点:   十分便于进行增删改查的操作   只需解析一次拿到dom对象后可以重复使用对象,减少解析的次数 缺点:   解析过程比较慢。需要将整个文档都解析完才能进行操作   需要将整个树的内容都加载到内存中来,耗费内存,文档过大时不适用 2. sax解析:(Android里面常用pull解析,与sa...

a166244的博客 202
上一篇: javaEE&nbsp;servlet-02
下一篇: javaEE Tomcat应用
xiao_fu_ying
博客等级 码龄14年 18粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值