初识Android之xml解析

52破解安卓专项-使用Android Killer实现多开 在手机安装打包后的apk,在没有卸载原来的apk时,发现安装过程中出错,新apk安装不进去。使用Android Killer自带的文本替换功能,直接全部修改:net.meishi360.app-》net111.meishi360.app。最主要的核心问题出来了!如果安装相同包名的apk时会进行签名校验判断已经在手机中的apk的签名是否和要安装的签名一致,如果不一致就会安装失败!由于这个apk比较简单并没有太多的核心层的调用所以只需要修改AndroidManifest.xml文件里的的包名就可以实现多开了! 阅读详情

Android 作为一个开源移动开发平台,为用户提供了众多丰富有趣的功能,XML作为Internet 上的一种数据格式为其实现提供了一些特殊的支持。今天花了一些时间学习了下xml的解析,现在总结如下:

读取XML主要有2种方法:DOM和SAX,DOM(文档对象模型),为XML文档的解析定义了一组接口,解析器读入整个文档,构造一个驻留内存的树结构,然后代码就可以使用DOM接口来操组整个树结构,其优点是:整个文档树都在内存当中,便于操作;支持删除、修改、重新排列等多功能。缺点是:将整个文档调入内存(经常包含大量无用的节点),浪费时间和空间。这种方式的使用场合是:一旦解析了文档还需要多次访问这些数据,而且资源比较充足(如内存、CPU等)的情况。

为了解决DOM解析XML引起的这些问题,出现了SAX。SAX全称Simple API for XML,即指一种接口,也是指一个软件包。作为接口,SAX是事件驱动型XML解析的一个标准接口。SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(documnet)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续做同样的扫描,直到文档结束。大多数SAX实现都会产生以下类型的事件:
    在文档的开始和结束时触发文档处理事件。
    在文档内每一XML元素接受解析的前后触发元素事件。
    任何元数据通常都由单独的事件交互。
    在处理文档的DTD或Schema时产生DTD或Schema事件。
    产生错误事件用来通知主机应用程序解析错误。

在SAX接口中,事件源是org.xml.sax包中的XMLReader,它通过parser()方法来开始解析XML文档,并根据文档的内容产生事件。而事件处理器则是org.xml.sax包中的ContentHander、DTDHander、ErrorHandler,以及EntityResolver这4个接口,它们分别处理事件源在解析XML文档过程中产生的不同种类的事件。而事件源XMLReader与这4个事件处理器的连接是通过在XMLReader中的相应事件处理器注册方法setXXXX()来完成的。

ContentHandler是Java类包中一个特殊的SAX接口,位于org.xml.sax包中。该接口封装了一些对事件处理的方法,当XML解析器开始解析XML输入文档时,其会遇到某些特殊的事件,比如文档的开头和结束,元素开头和结束,以及元素中的字符数据等事件。当遇到这些事件时,xml解析器会调用ContentHandler接口中相应的方法来响应该事件。主要方法有:void characters(char[] ch, int start, int length) ;void startDocument()
void startElement(String uri, String localName, String qName, Attributes atts)
void endDocument() ;void endElement(String uri, String localName, String qName) 。

ErrorHandler处理文档中产生的错误。主要方法有:void error(SAXParseException exception) ;
void fatalError(SAXParseException exception) ;void warning(SAXParseException exception) 。

DTDHandler处理对文档的DTD(Document Type Definition是一套关于标记符的语法规则)进行解析时产生的相应事件。主要方法有:void notationDecl(String name, String publicId, String systemId) ;
void unparsedEntityDecl(String name, String publicId, String systemId, String notationName) 。
    EntityResolver处理外部实体。主要方法有:abstract InputSource resolveEntity(String publicId, String systemId) 。

SAX的主要优点是:不用事先调入整个文档,占用资源少。尤其在嵌入式环境中,极力推荐采用SAX进行解析XML文档。主要缺点是:不像DOM一样将文档长期驻留在内存,数据不是持久的,事件过后,如没有保存数据,那么数据就会丢失。使用场合:机器性能有限,尤其是在嵌入式环境,如Android,极力推荐采用SAX进行解析XML文档。
    由于使用DOM方法需要将整个XML文档加载内存中,对系统资源占用比较多,这对内存比较紧张的Android系统来说,使用DOM方法读取XML文档会有很大的限制。通常使用SAX方法来读取XML,这样对内存资源的占用相对比较少,因此在嵌入式设备中极力推荐使用,Android也不例外。

Android开发必知:PackageManagerService如何解析你的AndroidManifest.xml(附源码追踪技巧) 本文深入剖析了Android系统核心服务PackageManagerService如何解析AndroidManifest.xml文件。通过追踪源码,详细介绍了PKMS的启动、初始化流程,以及PackageParser如何将清单文件转化为系统内部数据结构,并提供了实用的源码追踪技巧与常见问题排查方法,帮助中高级开发者深入理解应用安装与识别的底层机制。 阅读详情

相关推荐

js逆向、安卓逆向教程

时,由于安全原因,触发一定条件时浏览器会在正式请求之前自动先发起 OPTIONS 请求,即 CORS 预检请求,服务器若接受该跨域请求,浏览器才继续发起正式请求。Magisk 是一套用于定制 Android 的开源软件,支持高于 Android 5.0 的设备。options 请求就是预检请求,可用于检测服务器允许的 http 方法。]适用于几乎所有安卓模拟器(7+)安装magisk的教程-简单无脑向。:从根检测 / 系统完整性检查中隐藏 Magisk(Shamiko)1.到官网下载9.0模拟器,并安装。

m0_61634551的博客 2663

android framework源码开发---添加自己写的xml布局文件并在PhonewindowManager里调用

android 简单的运算验证思考源码java代码调用编译注意效果图 思考 1.往android framework 中添加自己的布局需要在什么位置添加? 2.直接加上去会遇到什么问题? 源码 布局 // An highlighted block <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androi

a13066876286的博客 1531

Android代码-symbols

Symbols Symbols is a Java library to generate static strings constants for attribute names using annotation processor. Tell me more In some cases, in Java (ex: when using reflection methods) we need to refer to class attributes. To do so we usually create static strings of the names of the attributes. This is boiler-plate code and its an origin of problems (ex: when changing attributes names). Symbols helps to solve this problem. Show me the codes! Lets imagine that we have the following POJO, t

android Framework层添加资源方式

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

u011938614的专栏 3555

基于ROS的室内移动机器人自主导航技术

随着机器人技术的发展,近些年来室内移动机器人的研究热度越来越高。本文主要利用ROS操作系统对室内移动机器人的建图定位与自主导航关键技术进行研究。 ROS是目前开发较为完整具有广阔应用前景的开源机器人操作系统,具有分布式、模块化、代码复用等优良特点。同时ROS还提供了许多开源库,在这些库的基础之上研究同时定位与地图构建和机器人自主导航技术可以节省大量时间。 ORB-SLAM2是比较优秀的视觉SLAM算法之一,它具有计算量比较小、能够实时运行等优点。在介绍ORB-SLAM2的框架之前,首先会介绍视觉SLAM的一

weixin_44553616的博客 1909

WorldPop数据集

WorldPop数据集介绍

qq_43874102的博客 1万+

编译android源码中的资源文件

在4.2源码中,将系统私有资源分离成了单独的文件symbols.xml,公共资源仍然在public.xml中. symbols.xml中的系统私有的资源(不对app公开),另一种是public.xml中的公共资源(可以在app中访问)。 如果要添加的资源是私有的,则加上 <java-symbol type="drawable" name="test" />(不需要id),如果是公共的则先找到最后

444

数字后端零基础入门系列 | Innovus零基础LAB学习Day7

数字后端零基础入门系列 | Innovus零基础LAB学习Day7

weixin_37584728的博客 2271

Android源码 在framework中加入一张图片资源,获取不到资源文件

2.修改framework/base/core/res/res/values/symbols.xml文件,声明该图片资源。此时查看目录/out/target/common/R/com/android/internal/R.java文件,此时会看到该图片资源对应的id生成。1.将图片资源stat_notify_alarm.png拷贝到framework/base/core/res/res/drawable-hdpi下(因为本项目引用的就是hdpi下的资源)

qq_27494201的博客 793

芒果YOLOv7改进04:Loss篇:原创改进损失函数Repulsion:独家首发最新改进Repulsion Loss解决目标遮挡场景下检测,为解决密集人群检测中遮挡设计的损失函数,打造高效检测器涨点

YOLOv7原创改进Repulsion|首发最新改进为解决密集人群检测中遮挡设计的损失函数

包括YOLOv5、YOLOv7、YOLOv8等模型改进 3252

RK3588 buildroot 双网口bonding调试

本文介绍了Rockchip Buildroot中配置网络冗余的方法,通过bonding技术将多个物理网口合并为逻辑接口。主要内容包括:1)7种常见bonding模式的特点及适用场景;2)RK3588的具体配置流程,包括内核配置(启用bonding驱动、修改dts)、添加ifenslave工具;3)系统编译和网络状态检查。

501846585_QQAndroid_java 459

Symbol类型

1.基本方法 let a=Symbol();//创建一个symbol symbol本身是原始类型,所以typeof的时候返回symbol,而不是object console.log(typeof a); 使用symbol时,能够传入一个字符串键值,但是这个参数与它本身的定义无关,而与人相关。 let a=Symbol(); let b=Symbol(); console.log(a === b); 即使好像a与b是一样的,但是它们还是不同,因为存储的地方不一样,所以false。 symb

0day 495

CloudCompare 二次开发(41)——点云重建三维凸包并计算体积

本文介绍了如何结合PCL与CloudCompare实现点云三维凸包的构建与可视化。通过代码集成,在CloudCompare界面添加功能按钮,实现点云数据转换、凸包构建、体积计算以及可视化显示。具体步骤包括:1) 在UI中添加功能按钮;2) 将点云数据转换为PCL格式;3) 使用PCL的ConvexHull算法构建三维凸包;4) 计算并显示凸包体积;5) 将结果以点云和网格形式可视化显示。最终实现了点云凸包的自动构建与体积计算功能,为点云处理提供了实用工具。

点云侠的博客 193

【安卓基础1】初识Android

Android学习入门,创建HelloWorld程序,分析,详解项目目录资源,详解Gradle,日志等

丨康有为丨的博客 2136

STM32Cube高效开发教程<高级篇><FreeRTOS>(十八)-----软件定时器

一、 软件定时器概述声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(高级篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。在FreeRTOS中,自动创建的任务有空闲任务和定时器服务任务。FreeRTOS可以通过定时器服务任务提供软件定时器功能。在某些对定时精度要求不太高,无须使用硬件定时器的情况下,我们可以使用FreeRTOS的软件定时器。

我的博客 157

SerDes系列之 SSC扩频时钟技术

扩频时钟,又称展频(SSC-Spread Spectrum Clocking),当前PCIE、DDR、USB等几乎所有的高速接口都支持SSC的功能。电子工程师在日常的电气测试中经常与之接触,在电磁传导和辐射发射验证过程中,经常需要使用到芯片的SSC功能,它的物理表现形式,就是信号的比特率会在一个很小的范围内浮动,多见于周期性变化的时钟信号。

一只豌豆象的博客 3441

初识XML

xml入门

jianghuan0122的博客 259

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

XML (初识)

XML 1 XML 简介 什么是 xml? xml 是可扩展的标记性语言。 xml 的作用? xml 的主要作用有: 用来保存数据,而且这些数据具有自我描述性 它还可以做为项目或者模块的配置文件 还可以做为网络传输数据的格式(现在 JSON为主)。 2 xml 语法 文档声明。 元素(标签) xml 属性 xml 注释 文本区域(CDATA 区) 2.1 文档声明 我们先创建一个简单 XML 文件,用来描述图书信息。 1)创建一个 xml 文件 <?xml version="1.0" enc

Syntactic Sugar 282

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

4. 初识XML解析

XML解析分为两种方式: 1. DOM:W3C组织推荐的一种解析方式 2. SAX:Simple API for XML ,不是官方标准,产生自XML社区几乎所有的XML解析器都支持它。 StAX:JDK6.0提供新的解析方式 Stream API for XML XML解析开发包: Jaxp:SUN 定义好了,不需导包,很好的支持DOM和SAX Jdom、Dom4J:D...

weixin_30374009的博客 87

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android逆向基础笔记—初识逆向

(本笔记来源于吾爱以及吾爱坛友,加上本人自己的整理) 一.初识 APK、Dalvik字节码以及Smali 1. apk是什么? apk实质上是一个zip压缩包,将apk后缀修改为zip,解压之后可以看到其内部结构: 2. apk 的组成 assets: 资源目录1 assets 和 res 都是资源目录但有所区别: res 目录下的资源文件在编译时会自动生成索引文

sorgs 7631

初识Android

Android项目的开发过程 开发的一般流程 在IDEA集成环境生成Android应用项目框架 修改和编写Java源代码 修改和编写xml源程序 调用模拟器运行应用程序 Android应用程序架构解析 逻辑控制层和表现层分开设计,控制层由Java实现,表现层由XML文档实现。由Java程序控制跳转的界面。 Android工程项目结构解析 项目总体结构 我们先看看工程项目的结构: .gradle 存放 Android Studio 自动生成的文件 .idea 存放 Android Studio 自动生

zhuzi的博客 630

Android-RecylerView初识

今年Google I/0大会,Google开放了两个全新的视图:RecylerView和CardView。这篇博客会提供关于RecylerView的简介。 RecylerView作为support-library发布出来,这对开发者来说绝对是个好消息。因为可以在更低的Android版本上使用这个新视图。下面我们先看如何获取RecylerView。

冥萧阳的专栏 4万+

Android属性动画完全解析(上),初识属性动画的基本用法

在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame animation)和补间动画(tweened animation)。逐帧动画的工作原理很简单,其实

Dream It Possible 1万+

Android 第1讲:Android的初识

Android 的初识

weixin_47323733的博客 850

Unity安卓打包:Plugins/Android目录的奥秘

Unity与Android打包核心机制解析 本文深入剖析Unity与Android打包过程中Plugins/Android目录的关键作用,揭示其作为原生插件"传送门"的技术本质。通过资源分流算法、Manifest合并机制等底层原理,详细解释.aar/.jar文件的生命周期流转路径,分析常见SDK接入问题的根源。文章包含完整的打包流程模拟伪代码,展示Unity如何自动收集、分类并注入各类安卓资源到最终APK中,为开发者提供处理插件依赖、ABI适配等问题的系统性解决方案。 (字数:149字)

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1235
上一篇: 杭电ACM大数JAVA提交实例
下一篇: Delphi写的多媒播放器
ITSource
博客等级 码龄15年 12粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值