Android 下的 XML 文件(概念理解、存储位置理解)

一、XML

1、XML 概述
  1. XML(Extensible Markup Language,可扩展标记语言)是一种用于存储和传输数据的标记语言

  2. 类似于 HTML,但旨在传输和存储数据,而不是显示数据,且基本语法都是标签

2、XML 的特点
(1)可扩展性
  • XML 允许开发者定义自己的元素(标签),即想怎么写就怎么写
(2)可约束性(简单了解即可)
  • 开发者也可以使用一些第三方应用程序、框架来约束 XML 元素(标签)的定义,即规定写什么
  1. DTD(Document Type Definition,文档类型定义):使用非 XML 的语法(通常是 SGML 的简化形式)来描述 XML 的结构,DTD 主要定义了元素的名称、元素之间的关系、元素的顺序、元素的属性

  2. XSD(XML Schema Definition,XML 模式定义):使用 XML 的语法来描述 XML 的结构,XSD 可以定义复杂的数据类型、元素的序列、元素的出现次数、属性的默认值等

  • DTD 和 XSD 都是用来约束 XML 的有效手段,但 XSD 相比 DTD 更加强大
3、XML 文件的基本结构
  1. 声明(可选):在文件的开始处,通常包含 XML 的版本和字符编码等信息,例如,<?xml version="1.0" encoding="utf-8"?>

  2. 元素:XML 文档由元素构成,元素通过开始标签和结束标签来定义,元素可以包含文本内容、属性或其他元素

  3. 属性(可选):元素可以包含属性,属性提供元素的额外信息,并且总是位于开始标签中

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>  
<dogs>  
    <dog age="3">  
        <name>tom</name>  
        <color>black</color>  
    </dog>  
    <dog age="4">  
        <name>jack</name>  
        <color>White</color>  
    </dog>  
</dogs>

二、Android 下的 XML 文件

1、Android 下 XML 文件的使用场景
  1. 布局文件:用于定义应用程序的用户界面布局,通常存储在 res/layout 目录下

  2. 字符串资源文件:用于定义应用程序中使用的字符串资源,通常是存储在 res/values 目录下的 strings.xml

  3. 颜色资源文件:用于定义应用程序中使用的颜色资源,通常是存储在 res/values 目录下的 colors.xml

  4. 尺寸资源文件:用于定义应用程序中使用的尺寸资源,通常是存储在 res/values 目录下的 dimens.xml

  5. AndroidManifest.xml:这是一个特殊的 XML 文件,该文件是 Android 应用程序的入口点,用于声明应用程序的基本属性,例如,组件(活动、服务、广播接收器、内容提供者)、权限、API 级别等

2、res/raw 目录与 assets 目录
  • res/raw 目录与 assets 目录都是适合放置一些项目中所使用的 XML 文件的地方,res/raw 目录与 assets 目录通常都需要手动创建
  1. res/raw 目录应该位于模块的 src/main/res 目录下

  2. assets 目录应该位于模块的 src/main 目录下

(1)res/raw 目录
  1. res/raw 目录用于存放那些不需要系统编译成二进制形式的文件,raw 有原始的意思,

  2. res/raw/ 目录中的文件会被映射到 R.java 文件中,可以直接使用资源 ID 访问,即 R.raw.【文件名】

  3. res/raw/ 目录下如果再创建目录并在其中存放文件,那么这个文件无非被映射到 R.java 文件中

  4. res/raw/ 目录下的资源访问起来相比 assets 目录要更快一些

(2)assets 目录
  1. assets 目录也用于存放那些不需要系统编译成二进制形式的文件,assets 有资产的意思

  2. assets 目录中的文件不会被映射到 R.java 文件中

  3. assets 目录可以创建目录结果

  4. assets 目录下的资源访问起来相比 res/raw/ 目录要慢一些

相关推荐
寻星探路4 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
工程师老罗5 小时前
如何在Android工程中配置NDK版本
android
曹牧6 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
爬山算法7 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7257 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎7 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄7 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
忆~遂愿7 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds8 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化