详解xml

xml

xml简介

XML是一种可扩展标记语言 (Extensible Markup Language, XML)。是一种可扩展的标记语言,XML重在数据交换,用于不同平台或者应用程序之间交换数据,存储数据。

版本:XML1.0版本(使用)      XML1.1版本(不向下兼容)

1:XML是纯文本标记

XML文件是纯文本的形式,正是由于这种简单的格式,才让所有能处理纯文本的程序都能处理XML文件。这样对于数据交换和传输时至关重要的,也提高了它的兼容性和与平台无关性。

2:XML可以随意的定义自己的标签

你可以以任意文字定义标签,只要有开始符号和结束符号,只要符合XML的树形结构就可以,甚至可以使用中文。

3:与HTML的区别

XML重在存储数据,html重在显示数据。它们都是标记语言,但是html的标记是死的。xml的标记是活的。   如:新浪天气预报接口

4:XML是没有行为的

这句话的意思就是XML只能放在文件里面等着别人去读取,写入。自己本身没有执行的能力。

5.作为框架的配置文件(Struts2 Spring Hibernate)

xml语法

文档声明(重点)

* 文档声明:声明当前的这个文件就是一个XML文件。必须要出现的。
    * 写法:   <?xml version="1.0" ?>
    * 需要出现在xml文档中的第一行第一列的位置。
    * 属性:
        * version="1.0"         XML文件的版本
        * encoding="UTF-8"      代表XML打开文件时所采用编码
        * standalone="yes/no"(可写也可以不写)          XML文件是否独立的,如果不是独立的,就可以引入外部文件。
* 产生乱码(重点)
    * 产生乱码:在保存文件时,和打开文件时所采用的编码不一致。
    * 解决办法:只需要保存文件时和打开文件所采用编码一致就ok
    * 注意:MyEclipse不会有乱码的问题。

定义元素

* 必须有开始标签结束标签。每个节点开始结束必须都对应,缺一不可。xml是一个树结构,只能包含一个根节点。
    * 包含标签主体内容  <abc>内容</abc>
    * 不包含标签主体       <abc/>* 标签必须要合理的嵌套    与HTML的注释是相同   <!-- 也是XML的注释 -->    注释也不可以嵌套。* XML的属性命名规范与元素命名规范。
* 元素定义规范
    * 区分大小写 <P><p>  代表不同的标签
    * 不能以数字和中划线开头
    * 不能以XML(Xml        XML)开头
    * 不能包含空格和冒号

定义属性

* 自定义的属性    <abc xyz="" >
* 元素上不能有相同名称的属性 错误的:<abc xyz="" xyz="" >
* XML的属性值必须使用引号引起来(单引号或者双引号)

转义字符

* <     &lt;
* >     &gt;
* &     &amp;
* "     &quot;
* ‘     &apos;

CDATA区

* 作用:使用CDATA区中间的内容解析成文本内容(字符串)。
* 语法:   <![CDATA[ 内容 ]]>

总结XML的语法

* XML必须有开始和结束标签。
* XML区分大小写
* XML必须正确的嵌套
* XML只能有一个根节点,必须要有的。
* XML的属性的值需要使用引号(双引号或者单引号)
* 转义字符需要进行转义,或者使用CDATA区括起来。


XML的约束

* 格式良好的XML:遵循XML的语法结构。
* 有效的XML:符合XML的约束的XML文档。 

两种方式

DTD约束 schema约束

一.DTD约束

DTD约束开发的步骤

* 1:先编写一个XML的文档(被约束)。
* 2:编写DTD的约束文档(约束)。
* 3:创建一个DTD文档。
    * 3.1 定义元素  语法:<!ELEMENT 元素名称 元素类型 >    XML文档中可以出现的元素
    * 3.2 判断哪些是复杂的元素,哪些是简单元素
    * 3.3 如果是简单元素(只包含文本内容)  元素类型写法:(#PCDATA)
    * 3.4 如果是复杂元素(下边包含子节点)  元素类型写法:(子节点1,子节点2...)

DTD与XML结合一起

在XML的文件中引入DTD的约束文件。

* 直接写在XML文件的上面
    * <!DOCTYPE 根节点 [ DTD文件的内容 ] >
* 定义外部的DTD文件,引入外部的本地的DTD文件
    * <!DOCTYPE 根节点 SYSTEM "DTD文件的地址">
* 引入外部的DTD文件,引入的网络上的DTD文件
    * <!DOCTYPE 根节点 PUBLIC "DTD文件的名称" "DTD文件的地址">

DTD的语法

元素定义

* 写法:<!ELEMENT 元素名称 元素类型>
* 元素类型:
    * (#PCDATA)                 可解析的字符数据(字符串)
    * EMPTY                     空(没有标签主体)
    * ANY                       任意类型
    * (子节点1,子节点2...)        当前的元素是复杂的元素,下面包含子节点
             * 子节点之间关系
                  * 子节点与子节点出现顺序的关系
                       * ,     :代表子节点按着顺序出现
                       * |     :子节点出现只能出现一个
                       * 子节点出现的数量的关系
                       * +     :子节点可以出现1次或多次
                       * *     :子节点可以出现0次或多次(任意次)
                       * ?     :子节点可以出现0次或1次

属性定义

* 写法:
    <!ATTLIST 元素名称
        属性名称 属性类型 属性约束
        属性名称 属性类型 属性约束
    >
       * 属性类型
         * CDATA     字符数据(字符串)
         * 枚举:没有关键字,写法(值1|值2|值3),只能从枚举中选择其中一个值
         * ID:代表是属性是唯一的,值就不能相同了。值也不能是数字

       * 属性约束
        * #REQUIRED     属性是必须要出现的
        * #IMPLIED      属性的出现是可选的
        * #FIXED        固定值 -- #FIXED "固定值"
        * 默认值           提供默认值   ""

实体定义(了解)

* 写法:   <!ENTITY 别名 "值">        定义了一个实体
* 作用:需要在XML的文件中需要引入实体,就会在XML文档中显示别名所对应的值
    * 引入的语法:&别名;

二.schema约束

* schema约束为了DTD的局限性。
* schema约束和DTD的区别(面试题)
    * XML schema约束符号XML的语法规则
    * DOM或者SAX解析的方式很容易解析schema文档
    * schema约束对名称空间支持的非常好的
    * schema约束文档比DTD支持更多的数据类型,支持自定义数据类型。

schema约束文档快速入门

1:先创建schema的约束文档
 * 先引入W3C的名称空间,在<schema>根节点上,使用xmlns="W3C的名称空间"
    * xmlns  xml namespace
    * xmlns="http://www.w3.org/2001/XMLSchema"
2 定义元素,想约束XML的元素
    * <element name="元素名称" >
3 判断是否是复杂还是简单
    * 如果是简单元素   使用type的属性设置元素的数据类型
    * 如果是复杂元素
        * 声明我是复杂元素 <complexType>
        * 声明子节点出现的关系    <sequence>
4 给自己定义的schema约束起名字(名称空间的空间)
    * targetNamespace="名字需要唯一的" 一般情况下使用域名。
5 elementFormDefault:决定xml文件里面的书写格式
    * unqualified   :质量不好的
    * qualified     :质量好的(记住)

二:在XML的文档中引入schema的约束文档
* 目的:引入自己定义的schema约束文档
* 需要先引入W3C的名称空间:执行当前的XML文档是一个实例文档。
    * xmlns="http://www.w3.org/2001/XMLSchema-instance" 一个实例文档
    * xmlns="http://www.w3.org/2001/XMLSchema"          一个约束文档
* 引入自己定义的schema约束
    * xmlns="http://www.itcast.cn/hm14"
* 遇到了问题:一个元素标签上,有相同名称的属性了。
    * 解决问题:起别名(前缀名)。
    * 元素的标签出现的概率小的名称空间上起别名就ok了。
* 引入自己定义的schema文件的地址
    * xsi:schemaLocation="schema约束文档的名称 文档的地址"

名称空间的概念

* 名称空间:自己定义schema文档,需要使用名称空间起名字。
* 在XML文档中引入了名称空间,因为XML文档可以引入多个名称空间,只有一个默认的名称空间。
* 理解相当java中包的结构。

<?xml version="1.0" encoding="UTF-8"?>
<!-- 数据文件 引用多个Schema -->
<company xmlns = "http://www.example.org/company"
    xmlns:dept="http://www.example.org/department"
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.example.org/company company.xsd http://www.example.org/department department.xsd"
    >
    <employee age="30">
        <!-- 部门名称 -->
        <dept:name>人力资源部</dept:name>
        <!-- 员工名称 -->
        <name salary="3000.00">王晓晓</name>
    </employee>
</company>
时间: 2024-12-13 05:14:48

详解xml的相关文章

XStream 用法详解 XML 转换为 java 实体类

XStream 用法详解 java 类与 XML 互换 现在 WEB数据交换的时代,传送XML目前是一个比较流行的方式,具有统一的规则约束,为实现后台接口提供了一个很方便的实现. 我编写了一个 接收XML并转换成所需要的Object类的 小例子,希望能够对做互联网数据传输.接口调用的朋友有所帮助. 首先要导入jar包xstream-1.4.3-sources.jar 和 xmlpull-1.1.3.1.jar 两个包: 其次是预备一个 XML 事例 <config> <span styl

详解xml文件描述,读取方法以及将对象存放到xml文档中,并按照指定的特征寻找的方案

主要的几个功能: 1.完成多条Emp信息的XML描述2.读取XML文档解析Emp信息3.将Emp(存放在List中)对象转换为XML文档4.在XML文档中查找指定特征的Emp信息 dom4j,jaxen 官网下载页面: http://sourceforge.net/projects/dom4j/files/dom4j-2.0.0-ALPHA-2/ 也可以在网盘上面下载:http://yunpan.cn/cwaNde7UYN83d  提取码 e247 1 完成多条Emp信息的XML描述 1.1 问

【XML】详解XML

目录结构: contents structure [-] 什么是XML 解析XML 解析XML的两种方式 使用dom4j解析xml dom4j的部分API 打印一个XML文件的全部内容 在dom4j中应用XPath解析XML 相关的部分API XPath的路径表达式 通配符 谓语 使用java写一个XMl文件 将一个带有书籍信息的List集合解析为XML文件 1 什么是XML XML(eXtensible  markup language) 是一种可扩展的标记语言 ,即使可以自定义标签的语言.

web.xml 中的listener、 filter、servlet 加载顺序及其详解

转自:http://zhxing.iteye.com/blog/399668 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> filter -> servlet 同

Struts2框架详解

目录: 1.Struts2的工作原理 2.Struts2的搭建 3.Struts2的核心文件 3.1 Struts.xml配置详解 4. Struts2重点 4.1 动态方法调用 4.2 多个配置文件 4.3 Action搜索顺序 4.4 从界面输入接收参数(登陆为例) 4.5 处理并返回结果(响应前端页面) 4.6 Action后缀设置 4.7 访问Servlet API 4.8 默认Action 5.Struts2拦截器 5.1 拦截器的定义 5.2 拦截器的作用 5.3 自定义拦截器 5.

Hibernate学习-5-配置文件详解

自动建表的配置建完表后,最好关掉配置<property name="hibernate.hbm2ddl.auto">create</property>每次都重新建表,如果表已经存在就先删除再创建.<property name="hibernate.hbm2ddl.auto">create-drop</property>每次在创建sessionFactory时执行创建表当调用sessionFactory的close方法的

Android--应用开发之所有动画使用详解

转载:http://blog.csdn.net/yanbober/article/details/46481171 1 背景 不能只分析源码呀,分析的同时也要整理归纳基础知识,刚好有人微博私信让全面说说Android的动画,所以今天来一发Android应用的各种Animation大集合.英文厉害的请直接移步参考Android Developer. Android系统提供了很多丰富的API去实现UI的2D与3D动画,最主要的划分可以分为如下几类: View Animation: 视图动画在古老的A

Mybatis-Generator 详解 http://www.cnblogs.com/jtzfeng/p/5254798.html

Mybatis-Generator 自动生成Dao.Model.Mapping相关文档 最近在学习mybatis,结果在写Mapping的映射文件时insert语句一直报错,于是想看看标准的映射文件是什么样.百度到Mybatis-Generator 自动生成Dao.Model.Mapping相关文档,于是乎就各种找资料试. 下边是一些相关整理: 1.需要准备的文件 主角:Mybatis-Generator  链接:https://github.com/mybatis/generator/rele

JAVAEE学习——struts2_01:简介、搭建、架构、配置、action类详解和练习:客户列表

一.struts2是什么 1.概念 2.struts2使用优势以及历史 二.搭建struts2框架 1.导包 (解压缩)struts2-blank.war就会看到 2.书写Action类 public class HelloAction { public String hello(){ System.out.println("hello world!"); return "success"; } } 3.书写src/struts.xml (记得加上dtd约束) &l