xml

来源:互联网 发布:qq刷皇冠软件 编辑:程序博客网 时间:2024/06/02 04:14

标记语言

    标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。当今广泛使用的标记语言是超文本标记语言(Hyper Text Markup Language,HTML)和可扩展标记语言(eXtensible Markup Language,XML)。标记语言广泛应用于网页和网络应用程序。

1)超文本标记语言HTML(Hyper Text Markup Language)

  写法格式:<a href="link.html">link</a>

  关注数据的展示与用户体验

  标记是固定的,不可扩展(如<a></a>表示超链接)

2)可扩展的标记语言XML(eXtensible Markup Language)

  写法格式:同html样式<a>link</a>

  仅关注数据本身

  标记可扩展,可自定义

3)Xml和Html语言由同一种父语言SGML(Standard Generalized Markup Language,标准通用标记语言)发展出来的两种语言

4)解析器

  专用解析器(比如:XML SPY专用于解析XML文件)

  浏览器

  MyEclipse

5)W3C(World Wide Web Consortium)

  W3C:开源的语言协会,万维网联盟(World Wide Web Consortium)

  HTML和XML都是W3C制定的语言规则

  官网:http://www.w3.org

  学习网站:http://www.w3school.com.cn/

XML语法规则

1.xml的声明:

  <?xml version="1.0" encoding="gb2312"?>

1)  ?和xml之间不能有空格

  xml的声明必须写在文件第一行

  Encoding(字符集)属性可以省略,默认的字符集是utf-8

2)声明必须顶头写,不能有空行或空格

3)等号左右不要多写空格

浏览器不会报错,但是在xml解析时会出问题

2.标记

1)诸如<书名></书名>这样格式的被称为标记,标记成对出现

2)标记包括开始标记和结束标记

3.元素(Element)

1)元素:元素包括标记和其中的内容

2)根元素:最外层的元素叫根元素

3)叶子元素:最里层的(没有子元素的)元素叫叶子元素

4)空元素:没有内容的元素叫空元素,比如<a></a>,可以简写为:<a/>

5)元素必须遵循的语法规则

  所有的标记都必须有结束

  开始标记和结束标记必须成对出现

  元素必须正确嵌套

  <a><b>c</b></a>   (正确)

  <a><b>c</a></b>   (错误)

  标记的大小写敏感Hello和hello不是同一个标记

  有且只能有一个根元素

 

4.实体引用(转义字符)

1)小于号(<):less than   --> &lt;

2)大于号(>):great than  -->&gt;

3)And符号(&):&amp;

4)双引号("):&quot;

5)单引号('):&apos;

5.属性(定义在开始标记中的键值对)

1)格式:属性="属性值"

2)要求:

  属性必须有值

  属性值必须用引号引起来,单引号或双引号都可以,但必须一致

武侠小说的属性有2组:isbn号码、是否热销标记

计算机书籍的属性有1组:isbn号码

6.CDATA类型的数据:特殊标签

1)格式:<![CDATA[文本内容]]>

2)特殊标签中的实体引用都被忽略,所有内容被当成一整块文本数据对待

注:CDATA表示是一整块,其中包括的特殊字符,比如<<不是全角的《

7.注释(xml和html相同)

1)<!--这是一段注释-->

2)编译器将忽略注释

3)Html和Xml注释方式相同

8.规则小结

1)必须有唯一的根元素

2)xml标记大小写敏感

3)标记必须被正确嵌套

4)属性必须有值,值必须用引号引起来

5)如果遵循所有的规则,称作格式良好的xml文件(well-formed)

9.使用XML文件描述数据的例子

1)早期属性文件描述数据的方式

  url= jdbc:oracle:thin@192.168.0.26:1521:tarena

  dbUser = openlab

  dbPwd = open123

2)现在使用xml表示方式

  <datasource id="db_oracle">

    <property name="url">jdbc:thin@192.168.0.26:1521:tarena</property>

    <property name="dbUser">openlab</property>

    <property name="dbPwd">open123</property>

  </datasource>

DTD/Schema

1)DTD/Schema:用来规范XML的标记规则

2)有效的xml文件(valid xml file)=格式良好的xml文件+有DTD或Schema规则+遵循DTD或Schema的规则

1.DTD/Schema的由来

行业交换数据时要求xml文件格式相同,所以需要大家遵守规范的xml文件格式,比如两份xml文件要有相同的元素嵌套关系,相同的属性定义,相同的元素顺序,元素出现相同的次数等。

如下为两份相同数据量,但是结构不同的xml文件,如图所示:

这两个文件数据相同,但结构不同,无法交换数据

2.文档类型定义DTD(Document Type Difinition)

1)DTD文档用来定义XML文件的格式,约束XML文件中的标记规则

2)DTD类型

  PUBLIC(行业共用的)

  SYSTEM(小范围自定义的)

3)DTD中的定义规则

  元素

  出现一次而且有顺序的元素:书名,作者,价格,册数,简介

  “*”星号:          表示出现0-n次的元素

  “+”加号:         表示出现1-n次的元素

  “|”:                 表示或(只能出现一次)比如(phone|mobile)表示固话或手机二选一

  (phone|mobile)*:表示phone或mobile可出现任意多次

  “?”问号:        表示出现0或1次

  属性(Attribute)

  定义在开始标记中的键值对

4)DTD规则_属性(Attribute)

     <!ATTLIST 标记名称 属性名称 属性类型>

     isbn CDATA #REQUIRED:      表示isbn属性是必须的

     isbn CDATA #IMPLIED:           表示isbn属性不是必须的

     hot CDATA "false":                表示hot的默认值是false,如果属性hot定义了值,

                                                      取此定义好的值,如果没定义,取值true

3.Schema

1)命名空间(NameSpace)XML文件允许自定义标记,所以可能出现来自不同源DTD或Schema文件的同名标记,为了区分这些标记,就需要使用命名空间。

  命名空间的目的是有效的区分来自不同DTD的相同标记

  比如如下xml文件中使用了命名空间区分开“表格”和“桌子”:

  <html:table>

    <line><column>这是一个表格</column></line>

  </html:table>

  <product:table>

    <type>coffee table</type>

    <meterial>wood</meterial>

  </product:table>

2)因为DTD无法解决命名冲突,所以出现Schema,它是DTD的替代者,dtd和schema的功能都是用于描述XML结构的

3)Schema支持命名空间,使用xml语法实现(Schema本身就是xml文件)因为用于规范和描述xml文件的定义文件(schema)本身也是xml文件,所以xml也被称作是自描述的语言

4)Schema文件的扩展名xsd:Xml Schema Difinition(简称XSD,遵循W3C标准)

5)Schema中的名词:

  复杂元素(有子元素的元素)

  简单元素(叶子元素)

4.java API解析XML文件(读xml文件)

1)java与xml有很多共同点(比如跨平台,与厂商无关),目前为止java对xml的解析较其他语言更完善

2)两种解析方式:

  DOM(Document Object Model文档对象模型)

  关键字:树(Document)

  优点:把xml文件在内存中构造树形结构,可以遍历和修改节点

  缺点:如果文件比较大,内存有压力,解析的时间会比较长

  SAX(Simple API for Xml基于XML的简单API)

  关键字:流(Stream)

  把xml文件作为输入流,触发标记开始,内容开始,标记结束等动作

  优点:解析可以立即开始,速度快,没有内存压力

  缺点:不能对节点做修改

3)JDOM/DOM4J:目前市场上常用的2种解析XML文件的API

  dom4j-1.6.1.jar    结合了DOM和SAX两种解析方式的优点

工程结构图:

结果展示:

 

 

 

0 0
原创粉丝点击