XML的基本概念和Android下的使用
1. XML的基本概念
1. 什么是XML:
1). XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,很类似HTML。它被设计的宗旨是表示数据,而非显示数据。
2). XML标签没有被预定义,需要用户自行定义标签。
3). XML技术是W3C组织(World Wide Web Consortium万维网联盟)发布的,目前遵循的是W3C组织于2000年发布的XML1.0规范。
2. 一个简单的XML:
<?xml version="1.0" encoding="UTF-8"?> <中国>
<北京>
<海淀></海淀>
<丰台></丰台>
</北京>
<广东>
<广州></广州>
<东莞></东莞>
</广东>
<湖北>
<武汉></武汉>
<襄阳></襄阳>
</湖北>
</中国>
1). XML语言出现的根本目标在于描述上图那种,在现实生活中经常出现的有关系的数据。
2). 在XML语言中,它允许用户自定义标签。一个标签用于描述一段数据;一个标签可分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其它标签描述其它数据,以此来实现数据关系的描述。
3). XML语言是一种通用的数据交换格式。
2. XML的基本语法
一个普通的XML包含了如下几个部分:
1. 文档声明
2. 元素
3. 属性
4. 注释
5. CDATA区 、特殊字符(没研究,用到再补充)
6. 处理指令(processing instruction) (PI)
以下面这个例子为例:
从Android中拿出来的一个manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.expample.test.MainActivity"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
一个普通的XML分为如下几个部分:
1. 文档声明
在编写XML文档时,需要先使用文档声明来声明XML文档。且必须出现在文档的第一行。Android默认为2000年发布的XML1.0规范:注意:声明也是一条处理指令
最简单的语法:
<?xml version=“1.0”?>
用encoding属性说明文档所使用的字符编码,Android默认为UTF-8。保存在磁盘上的文件编码要与声明的编码一致。
<?xml version=“1.0” encoding=“UTF-8”?>
解释:保存在磁盘上的文件编码要与声明的编码一致
如果新建一个XML文件,在我们Windows上默认是DBK的编码,这个时候在文件中添加encoding=“UTF-8”,也就是让解析器解析为UTF-8的格式,这是会编码格式不同而解析错误,所以如果添加UTF-8,必须也要将本身文件的编码格式修改为UTF-8
2. 元素
1). XML元素指XML文件中出现的标签。一个标签分为起始和结束标签(不能省略)。一个标签有如下两种书写形式:
包含标签主体:<mytag>some content</mytag>
不含标签主体:<mytag/>
2). 一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套。
错误:
<mytag1><mytag2></mytag1></mytag2>
3). 一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签或孙标签。
同时需要注意:对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的。
第一段:
<中国><北京/></中国>
第二段:
<中国>\r\n \t<北京/> </中国>
由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,使用换行和缩进等方式来让原文件中的内容清晰可读的“良好”书写习惯可能要被迫改变。
3. 属性
一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:
<mytag name="value"/>
属性值一定要用双引号(")或单引号(')引起来
定义属性必须遵循与标签相同的命名规范
在XML技术中,标签属性所代表的信息,如果没有标签体,也可以被改成用子元素的形式来描述,例如:
<mytag>
<name>
<firstname></firstnamename>
<secondname></secondname>
</name>
4. 注释
Xml文件中的注释采用:<!--这是注释-->
注意:
XML声明之前不能有注释
注释不能嵌套,例如:
<!--大段注释
……
<!--局部注释-->
……
-->
Xml的注释与html的注释是一样的.
5. CDATA区 、特殊字符(没去了解,用到在补充)
没去了解,用到在补充
6. 处理指令(processing instruction) (PI)
处理指令,简称PI(Processing Instruction)。
作用:用来指挥软件如何解析XML文档。
语法:必须以“<?”作为开头,以“?>”作为结尾。
常用处理指令:
XML声明:<?xml version=“1.0” encoding=“GB2312”?>
3. XML约束(Schema)
XML约束就是XML框架的设计者用来限定使用者到底可以写一些什么内容,XML才能识别。
例如谷歌就限定了在Android中XML到底可以写一些什么内容。
Android使用的约束就是schema
XML Schema对名称空间支持得非常好。
名词解释:名称空间
就是类似于C++中的命名空间。
在XML Schema中,每个约束模式文档都可以被赋以一个唯一的名称空间,名称空间用一个唯一的URI(Uniform Resource Identifier,统一资源标识符)表示。 在Xml文件中书写标签时,可以通过名称空间声明(xmlns),来声明当前编写的标签来自哪个Schema约束文档。如:
<aplex:书架 xmlns:aplex=“http://www.itcast.cn”>
<aplex:书>……</itcast:书>
</aplex:书架>
此处使用aplex来指向声明的名称,以便于后面对名称空间的引用。
XML的约束其实也是一个XML文件,只是不以.xml为后缀,而是以.xsd
下面我们来看一个xml的约束文件和其对应的一个xml
book.xsd:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.aplex.cn" //注意:这里的命名空间为http://www.aplex.cn
elementFormDefault="qualified">
<xs:element name='书架' >
<xs:complexType>
<xs:sequence maxOccurs='unbounded' >
<xs:element name='书' >
<xs:complexType>
<xs:sequence>
<xs:element name='书名' type='xs:string' />
<xs:element name='作者' type='xs:string' />
<xs:element name='售价' type='xs:string' />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
上面那个约束对应的xml为book.xml:
<?xml version="1.0" encoding="UTF-8"?> <aplex:书架 xmlns:itcast="http://www.apelx.cn" //这里的http://www.aplex.cn就是上面的命名空间,但是这样写太麻烦,就相当于给他起了一个别名,itcast,这里的xmlns就是XML NameSpace:命名空间
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=“http://www.itcast.cn book.xsd"> <aplex:书>
<aplex:书名>JavaScript网页开发</itcast:书名>
<aplex:作者>张孝祥</itcast:作者>
<aplex:售价>28.00元</itcast:售价>
</aplex:书>
</aplex:书架>
4. XML在Android中的使用
在Android开发中,XML有一般是有两个功能
1). 配置:在Android中传统的配置文件是*.properties属性文件(key=value),而XML也常用来做配置文件,它表示的数据则更为丰富。如果只是简单的配置,使用键值对,如果带有层次关系的,则最好使用XML文件
2). 保存数据
Android应用中的manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="sample.android_serialport_api.adapter"> <application //一个应用,不清楚到底算什么,应该算组件?
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" //界面最上面的标题
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">//一个activity组件,name表示注册的是哪一个activity,也可以写包的全名,name其实跟id差不多一个意思
<intent-filter>
<action android:name="android.intent.action.MAIN" /> //动作:应用程序的主入口,也就是一旦启动,第一个动作就进入main
//xxx:就是会在launcher里面生成一个图标,launcher也是一个应用,也就是点击home键会跑出来一堆图标的那个玩意
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>
XML的基本概念和Android下的使用的更多相关文章
- Android 下用 Pull 解析和生成 XML
Java 中是可以用 SAX 和 DOM 解析 XML 的,虽然在 Android 下也可以用这2中方式,但是还是推荐用 Pull.Pull 使用简单,效率相对高,Android 下是集成了 Pul ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- Android下/data/data/<package_name>/files读写权限
今天将更新模块拿到android上面测试的时候,发现在创建writablepath.."upd/"目录的时候出现Permission Denied提示BTW:我使用的是lfs来创建 ...
- Android下OpenCV的环境搭建
目录(?)[-] 前言 系统环境 相关工具 Android ADT环境搭建 Android SDK环境变量的配置 Android NDK的安装与配置 OpenCV for Android 环境搭建 基 ...
- android下的数据存储
android下数据存储的几种方式:(简单讨论) 1.文件 举例:登陆时“记住密码” 因为是基于Linux系统,直接建文件,文件会出现在项目工程:而手机登陆时,应该把文件放在手机里,通常数据放在dat ...
- android下身份验证方式调用webservice
在企业开发领域,webservice还是经常被用到的服务体系,因为他对安全事务支持都比较好. 有时候,我们就需要在android下调用后端的webservice服务,因为在内部网络环境下,所有需要ba ...
- Android(java)学习笔记198:Android下的逐帧动画(Drawable Animation)
1.帧动画: 帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一帧 ...
- Android下得到APK包含信息
很多情况下,我们需要通过APK文件来得到它的一些信息. (此时此APK不一定被安装了) 0. 基础知识:可以通过android.content.Context的方法 getPackageManager ...
- android下tcpdump抓包
tcpdump是最快捷方便的抓包方式,还可以加深对网络协议的理解.android下可以通过如下方式抓包: 1 Android上启动tcpdump Android设备可以把tcpdump的可执行文件上传 ...
随机推荐
- lucene整理3 -- 排序、过滤、分词器
1. 排序 1.1. Sort类 public Sort() public Sort(String field) public Sort(String field,Boolean reverse ...
- mysql设定或修改密码的三个方法
为用户设定密码: 1.mysql>SET PASSWORD FOR 'USERNAME'@'HOST'=PASSWORD('password'); 2.# mysqladmin -uUSERNA ...
- ASP.NET MVC 防止CSRF攻击
简介 MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request forgery)攻击的一个措施,它跟XSS(XSS又叫CSS:Cr ...
- kali linux之无线渗透(续)
Airolib 设计用于存储ESSID和密码列表,计算生成不变的PMK(计算资源消耗型) PMK在破解阶段被用于计算PTK(速度快,计算资源要求少) 通过完整性摘要值破解密码SQLite3数据库存储数 ...
- [Swift]遍历集合类型(数组、集合和字典)
Swift提供了三种主要的集合类型,称为数组,集合和字典,用于存储值集合. 数组是有序的值集合. 集是唯一值的无序集合. 字典是键值关联的无序集合. Swift中无法再使用传统形式的for循环. // ...
- su: Authentication failure 的解决方案
原因是:ubuntu默认不允许使用root登录,因此初始root账户是不能使用的,需要在普通账户下利用sudo权限修改root密码. 解决方案很简单:设置一个root密码就行了.注意是sudo 而不是 ...
- 个人KPI制定
1.工作量 1.1 能独立完成工作优先级 1.2 能独立预估工作时间 2.工作质量 2.1 项目按时完成没有延期 2.2 交付件质量 2.2.1 测试用例设计没有明显遗漏 2.2.2 测试bug符合规 ...
- Error:(1, 1) 错误: 需要class, interface或enum
这个东西在Ideal里面报的错误,在控制台提示: Error:(1, 1) 错误: 需要class, interface或enum 网上搜到说是编码问题,我的解决方式: 把出错的文件选中复制一份,再随 ...
- springmvc常遇到的错误
错误1: HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoClassDefFoundError ...
- ASP.NET:Application,Session,Cookie,ViewState和Cache之间的区别(转)
在ASP.NET中,有很多种保存信息的对象.例如:Application,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么? 为了更清楚 ...