xml基础

第一节:xml的概述

    Xml的全称是Extensible Markup Language 可扩展标记语言。它是由SGML(Standard Gerneralized Markup language)发展而来的,允许开发者自定标签,可以将标签和内容有效的分离。

(可扩展):相对于标记语言来说它可以自定标签。

标记语言 html  标签 <table> <h1> <p> 都是规定好的标签,我们才可以使用

 

 

Xmlhtml的区别:

Xml用来传输和存储的数据的。它可以自定义标签.

Html:显示数据<p></p> <p><p>

所以说xml并不是用来代替html,二者的为不同的目的而设计。

 

Xml的优势:

1、  简单易用

2、  严格的格式

---xml的基本语法

Xml是平台无关的数据交换语言,Java是平台无关的编程语言,有人为:xmlJava就是天生一对。

 

3、  数据逻辑与显示逻辑分离

 ---看似MVC模式理解

 

 

 

XmlJavaEE

1、  配置描述

JavaEE 最开始接触的JSP技术,在web.xml中可以配置Servlet,FilterListener体现了xml的应用。

Struts1  struts-config.xml

Hibernate  hibernate.cfg.xml   xxx.hbm.xml

Struts2   struts.xml

Spring2.5 bean.xml 

2、  简化的数据交换

Linux平台

个人笔记本

Window平台

Xml文件中

Xml文件的副本

 

 

 

 

 

 


3、  Web Services

   Web Services使用基于xml的消息处理作为数据通讯方式,消除了不同组件模型、操作系统和编程语言之间存在的差异,使异构系统能作为单个计算机网络协同运行。

Csdn webservice编程开发csdn网站

Xml的竞争对手:

1、  Jdk1.5 –>JavaAnnontation(注解)

2、  轻量级的数据交换格式------JSON(JavaScript Object Notation)

 

 

 

第二节:xml文档规范

 

 

Xml文档的分类

1、  格式不良好(malformed)xml文档:完全没有遵守xml文的基本规范的xml文档。

2、  格式良好(well-formed)的但无效的xml文档: 遵守xml文的基本规范,但没有使用dtdschema定义语义约束的xml文档。

3、  有效(valid)xml文档:遵守xml文的基本规范,并使用dtdschema定义语义约束,而且也完全遵守了dtdschema定义语义约束的xml文档。

 

Xml的语法

         一个XML文件分为如下几部分内容:

         文档声明

         元素

         属性

         注释 

         CDATA 、特殊字符

         处理指令(processing instruction

Xml的声明

最简单声明

 <?xml version=”1.0”?>

 

Encoding属性:字符编码 如果没有指定默认的是UTF-8编码

常见的字符集:

简体中文:GBK GB2312

繁体中文: BIG5

西欧字符:ISO8859-1

通用的国际编码:Unicode  UTF-8

 

演示案例:

  <?xml version="1.0" encoding="UTF-8"?>

<中国>

</中国>

出现了:

解码成字符

 字符集错误时的xml文档

 

新建是一个.txt文档

保存的是.xml UTF-8

默认的编码ANSI

中国

写入到硬盘

编码成二进制码

00 11

磁盘文件

 

 

 

 

 

 

 

 

 

 

 

 

 


Standalone:指定该文档是否需要引用其它资源,属性值只有:yesno

Yes:独立

No:不独立

 

 

Xml元素的基本规则

   元素是xml文档的基本单元,xml文档就是一个一个层层嵌套的元素组成的。整个的xml文档从根元素开始,根元素包含若干个子元素,而每个子元素又可以包含若干个子元素,从而可以组成一个xml文档。

 

Xml标签语法:

  1Xml的标签分为两类:

     单标记:<商丘/>

     双标记:<中国></中国>

  2xml标签的要求:

      1、标签名可以有字母(包括非西欧字符)、数字、下划线(_)、中划线(-)、冒号(:)和点号(.)组成,但不能以数字、中划线和点号开头。

2、标签名不能包含<>、,、$等符号

3、标签名种尽量不要出现英文的冒号(:),除非在使用命名空间。

4、标签名不能以字符xmlXML等任意大小写组合开始。

4、  标签名不能包含空格。

5、  标签名区分大小写

   

3xml标签嵌套子元素:xml允许深度嵌套子元素,只要保证元素之间合理的嵌套即可.而且xml元素可以嵌套多个重名的子元素,这多个子元素之间是有序的。

    第一个:xml

<中国>

 <北京>

     <海淀/>

     <朝阳></朝阳>

     <朝阳></朝阳>

 </北京>

</中国>

  第二个xml

<中国>

 <北京>

     <朝阳></朝阳>

     <朝阳></朝阳>

    <海淀/>

 </北京>

</中国>

 

4、空元素:空元素不可以接受子元素,也不可以接受字符串内容。

     第三个xml

      <book>

         <name>redarmy</name>

         <content/>  :备注:空元素 但可以接受属性,而且可以接受多个属性

      </book>

 

    <book>

         <name>redarmy</name>

         <content></content> :备注它包好的是一个空格 空格也是字符

      </book>

例如空元素接受属性:

  <book name=”Java建议” price=”30”/>

5、字符数据

   <book>

      <computer>Struts2开发详解</computer>

      <computer>

         Struts2开发详解

      </computer>

   </book>

  对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理

 

 如果文本字符中包含了一些特殊的字符,例如<&由于这些字符都有特殊的含义,因此直接在xml文档中使用该字符串将引起文档的混乱。

   <表达式>

        <比较符>1+3<6</比较符>

   </表达式>

代表的是文本字符串中包含了特殊的字符

 

有以下两种方法解决:

1、 使用实体引用:用另一个特殊符号代替这些特殊符号

2、 使用CDATA标记:将整个文档定义成字符串。

 

1、  使用实体引用

解决如下:

 <?xml version="1.0" encoding="UTF-8"?>

  <表达式>

        <比较符>1+3&lt;6</比较符>

      </表达式>

2、  使用CDATA标记

在特殊标记CDATA,所有的特殊字符,甚至是有效的元素都将被当成简单的字符串处理。实体引用也会失去作用,变成直接的文本。

CDATA的语法格式如下:

 <![CDATA[文本内容]]>

<?xml version="1.0" encoding="UTF-8"?>

  <表达式>

        <比较符>

             <![CDATA[

               1+3<6

              ]]>

           </比较符>

  </表达式>

    备注:由于xml文档根本不会对CDATA标记内容进行任何解析,因此在CDATA内可以放置任何内容,其中的内容永远不会出错。

 

6、  注释

Xml文档还可以加入解释用的字符数据,这些解释用的字符串不会被xml解析器处理。这些解释用的文本称为注释。Xml的文档注释与html完全一致。

Xml注释的语法格式如下:

<!--注释字符串 -->

Xml的注释允许包含元素和标签。

 

注意:

1、  Xml的注释不能够放在标签体内。

2、  不要把xml文档放在xml文档声明之前  xml文档的声明永远在第一行

3、  不在注释中使用双中划线(--)

…..

 

 

 

7、  处理指令

处理指令,简称PI processing instruction)。处理指令用来指挥解析引擎如何解析XML文档内容。

处理指令用于给处理xml文档的应用程序提供信息,告诉处理程序应该如何处理该文档。一个完备的xml文档的处理程序,可以读取xml文档的处理指令,并根据处理指令进行相应处理,或将它传给下一个程序。

Xml处理指令的格式如下:

<?处理指令名 处理指令信息?>

 

8、  属性

xml属性的特征:

1、  xml元素的属性必须有属性值,属性值必须用引号引起来。

2、  同一个xml元素里不能有多个同名的属性

3、  Xml元素里的多个属性之间没有先后顺序。

<book>

     <isbn>123456780</isbn>

     <book_name>Java讲义</book_name>

      <price>99</price>

</book>

比如说 这个book本身就有 isbn  book_name price的属性

那么

 <book isbn=”” book_name=”” price=””/>

 

 

Xml必须有一个根元素。

 

 

Xml文档的整体结构

1、  必须有一个根元素(有且只有一个)

2、  元素必须合理结束

3、  元素之间必须合理嵌套

4、  元素的属性必须有属性值

 

只要不满足上面的条件就是一个格式不良好的xml文档

只要满足上面的条件就是一个格式良好的xml文档

并且遵守了dtd或者schema就是一个有效的xml文档。

 

 

Xml文档是一种标准的结构化文档,可以转换成DOM(Document Object Model),其根节点对应DOM树的根节点。

 

book

computer

computer

………

computer

name

author

<book>

    <computer>

       <name>网上介绍</name>

       <author>redarmy</author>

    </computer>

 

    <computer>

        <name>网上介绍</name>

       <author>redarmy</author>

 

    </computer>

</book>

 

 

book

computer

computer

………

computer

name

author

 

 

 

 


  第三节 DTD详解

 目前有两种xml文档定义的语义约束

1、  Dtd  document type definition

2、  xml schema

 

xml语义约束

web.xml

<serlvet>

  <servlet-name></servlet-name>

  <servlet-class></servlet-class>

</servlet>

<servlet-mapping>

       <servlet-name></servlet-name>

       <url-pattern></url-pattern>

</servlet-mapping>

Dtd约束包括那几个方面

1、  定义xml的根元素、内容和结构

2、  定义xml文档中可以接受那些元素

3、  定义xml文档里每个元素接受的合法内容,包括是否为空,是可以是文本,可以接受那些子元素,子元素出现的顺序和子元素出现次数等。

4、  定义xml文档中每个元素能接受那些属性

5、  定义xml文档中每个属性的类型,能接受那些值,以及元素对属性的约束等。

6、  定义属性的固定值和默认值

7、  定义xml文档或dtd中可以使用的实体。

Dtd有作用

1、  Dtd采用了非xml的语法描述语义约束,可以提供如下功能

2、  通过使用dtd可以让每个xml文件带有一个有关其自身的格式描述

3、  不同的公司、组织可一致地使用某个标准的dtd来交换数据

4、  应用程序也可以使用某个标准的dtd验证所介绍的xml文档是否符合语义约束

5、  开发者也可以使用dtd来验证所创建的xml文档。

 

 

引入dtd的方式

1、  内部dtd

2、  外部dtd

3、  公用dtd

1、  内部dtd

   语义约束与xml文档的内容放在同一个xml文档中。内部dtd紧跟在xml声明和处理指令之后,以<!DOCTYPE 开始,]>结束。其语法格式如下

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE 根元素名[

       元素描述

  ]>

xml文档主体部分

 

2、  外部dtd

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE 根元素名 SYSTEM "外部的DTDURL地址">

 

3、  公用dtd

 

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE 根元素名 PUBLIC  "DTD的标识名"  "公用的DTDURL地址">

 

定义一个元素

<!ELEMENT 元素名(子元素,)>

<!ELEMENT 元素名(#PCDATA)>

 

 

DTD的文档结构如下:

   第一行是DTD声明部分 该声明与xml文档的生命语法格式相同

   0到多个注释部分,DTD注释与xml文档的注释完全相同

   0到多个<!ELEMENT…..>定义 每个它就是一个xml元素

   0到多个<!ATTLIST…..>定义每个它就是一个xml元素的属性

   0到多个<!ENTITY…..>定义每个它就是一个实体

   0到多个<!NOTATION…..>定义 每个它定义一个符号

彼此之间完全独立,无须相互嵌套。

 

1、  定义元素

      元素类型的定义的全称是:Element Type Defintion,简称ETD,它不但会定义每个文件中可能存在的元素,给元素的名称,而且会定义元素的具体类型。

元素类型描述主要有5种:

1、  任意类型

   可以是以下四种的内容

 语法格式:

  <!ELEMENT 元素名 ANY>

2、  字符串值

  

3、  空元素 <br/>

4、  包含子元素

5、  混合类型

 

<!--任意类型-->

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE book[

<!ELEMENT book ANY>

]>

 

无效的xml文档但是格式良好的xml文档

 

 

 

<!--空元素-->

<!ELEMENT 元素名 EMPTY>

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE book[

<!ELEMENT book EMPTY>

]>

有效的xml文档

 

 

<!--定义字符串内容的元素-->

<!ELEMENT 元素名 (#PCDATA)>

 

<?xml version="1.0" encoding="UTF-8"?>

<!ELEMENT book (computer)*>

<!ELEMENT computer (book_name,price,author)>

<!ELEMENT book_name (#PCDATA)>

<!ELEMENT price (#PCDATA)>

<!ELEMENT author (#PCDATA)>

 

 

<!--定义混合内容-->

<!ELEMENT 父元素名(#PCDATA|子元素1|子元素2|子元素3|........)*>  并不是互斥

|无序的重复出现 出现的次数不受限制

注意:1#PCDATA必须放在最前面

      2#PCDATA只能用|与各个子元素分隔

      3、不要试图在各个子元素之后添加?*+等表示频率的修饰符

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE book[

<!ELEMENT book (computer)*>

<!ELEMENT computer (#PCDATA|book_name|price|author)>

<!ELEMENT book_name (#PCDATA)>

<!ELEMENT price (#PCDATA)>

<!ELEMENT author (#PCDATA)>

]> 

<book>

    

         <computer>

        

             <book_name>JavaWeb开发</book_name>

             <price>30.0</price>

            <author>redarmy_chen</author>

       </computer>

 

      

       <computer>

             <book_name>CSS应用程序的开发</book_name>

            <price>1000</price>

            <author>redarmy_Chen</author>

       </computer>

</book>

 

定义子元素

1、  有序的子元素(,)

(,)用于分隔有序的子元素

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE book[

<!ELEMENT book (computer)*>

<!ELEMENT computer (book_name,price,author)>

<!ELEMENT book_name (#PCDATA)>

<!ELEMENT price (#PCDATA)>

<!ELEMENT author (#PCDATA)>

]> 

<book>

    

       <computer>

        

             <book_name>JavaWeb开发</book_name>

             <price>30.0</price>

            <author>redarmychen</author>

       </computer>

 

      

       <computer>

             <book_name>CSS应用程序的开发</book_name>

            <price>1000</price>

            <author>redarmy_Chen</author>

       </computer>

 

</book>

2、  互斥的子元素

互斥的子元素表明一系列的子元素中只能出现其中之一。

(|)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE book[

<!ELEMENT book (computer)*>

<!ELEMENT computer (book_name|price|author)>

<!ELEMENT book_name (#PCDATA)>

<!ELEMENT price (#PCDATA)>

<!ELEMENT author (#PCDATA)>

]> 

<book>

    

       <computer>

             <book_name>JavaWeb开发</book_name>

       </computer>

      

      

        <computer>

             <price>30</price>

       </computer>

 

      

       <computer>

            <author>redarmy_Chen</author>

       </computer>

 

</book>

 

3、  子元素出现的频率

 

 

      +: 一次或多次 (+)

            ?: 0次或一次 (?)

                 *: 0次或多次  (*)

注意:混合类型的频率只能安如下方式加:

<!ELEMENT computer (#PCDATA|book_name|price|author)*>

//#PCDATA以它开头的是混合类型 频率只能在最后加

 

 

 

4、  组合子元素

<!ELEMENT computer (book_name|price|author)>

 

5、  无序的子元素

 

 

2、  定义属性

<!ATTLIST属性所属元素  属性名  属性类型[元素对属性的约束][默认值]>

元素对属性的约束|默认值是可选的对于它们的使用有如下的情况:

1、  在没有指定元素对属性的约束,必须为该属性增加默认值。

2、  在元素对属性的约束是:#REQUIRED时,不能为该属性指定默认值。

3、  在元素对属性的约束是:#IMPLIED时,不能为该属性指定默认值

4、  在元素对属性的约束是:#FIXED时,必须为该属性指定默认值

#REQUIRED:必须的属性

#IMPLIED:可有可无

    #FIXED:固定值

<水果 品名=”苹果颜色=”绿色”>关于水果的元素</水果>

属性类型

类型

说明

CDATA

字符串数据 character data

(e1|e2|e3)

该属性是一系列枚举值之一

ID

Id必须是唯一的

IDREF

引用自己已经定义的id

IDREFS

空格区分多个id

ENTITY

是一个外部的实体

ENTITIES

多个外部实体,多个外部实体之间用空格分隔

Xml:

预定义的xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE 购物车[

  <!ELEMENT 购物车 (*,水果*,玩具)>

  <!ELEMENT EMPTY>

  <!ELEMENT 水果 EMPTY>

  <!ELEMENT 玩具 EMPTY>

 

  <!ATTLIST 类型 (鸡肉|牛肉|狗肉) #REQUIRED>

  <!ATTLIST 水果  类型  (苹果||香蕉) #IMPLIED>

  <!ATTLIST 玩具 类型  CDATA #FIXED "地雷">

 

]>

 

<购物车>

     < 类型="狗肉"/>

     <水果/>

     <玩具 类型="地雷"/>

</购物车>

 

CDATA

 

 

3、  定义实体

 

 

 

  第四节 CRUD

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值