zoukankan      html  css  js  c++  java
  • 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解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的。

    第一段:

    <中国><北京/></中国>

    第二段:

    <中国>
    
    
    	<北京/>
    
    </中国>

    由于在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>
  • 相关阅读:
    jvm gc 日志详细信息的输出(一)
    带宽与数据传输速率
    功率半导体器件
    超链接标签a样式生效,取消下划线,文字垂直(上下)居中
    防范诈骗
    去掉table中的空隙
    html中使用js实现内容过长时部分
    背景色透明度设置
    jQuery给标签写入内容
    多个div居中显示
  • 原文地址:https://www.cnblogs.com/maogefff/p/7783843.html
Copyright © 2011-2022 走看看