您的位置:首页 > 编程语言 > Java开发

Day05_JAVAEE系列:XML

2015-08-20 22:27 337 查看
XML概述

1)什么是xml?

xml, eXtend Markup Language, 可扩展标记语言

2) html vs xml

都由w3c组织制定的.

html语法特征:语法比较松散

1).不区分大小写 <p> <P> <br/> <BR/>

2).标记的写法不严谨 <p>xxxx</p> <p>xxxx

xml语法,开始的初衷是为了弥补html的缺点

html作用:负责网页的结构

xml作用:

1)描述带关系的数据结构(作为软件的配置文件)

    2)存储数据(作为小型的“数据库”)

3)xml作用

3.1描述带关系的数据结构(作为软件的配置文件)(大部分场景)

      .properties文件 键值对 无法描述关系

user=root

password=root

user=root(错误描述)

password=root(错误描述)

db.xml 文件:

<db-list>
      <db name="mysql">
          <user>root</user>
        <password>root</password>
     </db>
       


            <db name="oracle">
          <user>admin</user>
        <password>1234</password>
</db>
</db-list>


    应用:tomcat服务配置文件,三大框架(ssh struts2 spring hibernate)

3.2存储数据(作为小型的“数据库”)

    应用:mysql的数据可以到处,然后用xml文件存储

三、XML语法

xml后缀

浏览器内置了xml解析器,所以可以用浏览器来解析xml文件

1)xml文档声明

语法:<?xml version="1.0" encoding ="utf-8"?>

version: xml文件版本,通常1.0即可

encoding :xml文件被解析器使用什么编码解析

总结:

xml文件读取时中文时的编码问题

    1.1保存xml文件时的编码(另存为选择编码)

1.2解析器解析时使用什么编码(xml文档声明的encoding属性)

以上两处 的编码保持一致就不会出现中文乱码问题.

    standalone:是否是独立的xml文件(当前的xml是否依赖其他文件)

2)注释

和html注释一样<!-- -->

3)标签、属性(重点)

标签语法:

  3.1不能以数字开头

  3.2严格区分大小写

  3.3标签名中间不要有空格和冒号,不要使用xml作为名称(w3c的保留字)

  3.4在一个xml文件中有且仅有一个根标签(根元素)

属性语法:

  3.1属性值必须使用单引号或双引号包含,不能没有或者单双引号混用

  3.2一个标签内可以存在多个属性,但不能重复

4)特殊字符

和html一样

特殊字符 转义字符

    <    <

    >    >

    空格     

    ...

5)CDATA块

  可以批量处理特殊字符,在CDATA块中的代码不会解析成标签

6)处理指令(了解)

<?xml-stylesheet type="text/css" href="person.css"?>

告诉浏览器如何解析xml文件(使用什么样式)

可以让xml变为html文件(使用什么样式)

四、XML约束之DTD约束(看懂即可) -- 查看w3cshool文档即可

  两个概念区分:

1.良好的xml文件:符合w3c制定的语法规则

  2.有效的xml文件:符合开发者制定的约束规则

 xml约束分类:

dtd约束: 语法比较简单,功能不够强大

      应用:struts2, hibernate

schema约束:语法比较复杂,功能比较强大,约束比较细致.

    应用:spring tomcat配置

  dtd约束语法:

    要求:能够看懂dtd约束,写出一个有效的xml文件!!

    1)dtd使用方式

1.1 内部dtd

         特点:dtd内容直接写在xml文件中

1.2外部本地文件导入

<!DOCTYPE note SYSTEM "note.dtd"> dtd文件在本地文件系统

       1.3外部网络文件导入

        <!DOCTYPE 根元素 PUBLIC “名称” “http://struts.apache.org/dtds/struts-2.0.dtd”>

2)约束元素

<!ELEMENT 元素名称 类别> 或<!ELEMENT 元素名称 (元素内容)>

类别:

      EMPTY:  代表空元素

      PCDATA: 代表普通字符串(不包含子元素)

      ANY:代表元素任意内容(包含空元素,包含子元素)

      

     (元素内容)

      顺序问题:

        (元素1,元素2,元素3):一定依次出现元素1,再出现元素2,最后出现元素3

      数量问题:

        元素1:有且仅出现1次

        元素1*:出现0次或多次

        元素1+:出现1或多次

      3)约束属性

        <!ATTLIST 元素名称 属性名称 属性类型 默认值>

      默认值:约束属性是否必填

          #REQUIRED 必须的

          #IMPLIED 非必须的
       #FIXED value 固定值的

      属性类型:约束属性值是什么
       CDATA 普通字符串
      (en1|en2..) 枚举,多选一
       ID 唯一,在同一个xml文档中属性值必须唯一
五、XML解析之dom解析
1)什么是xml解析?
使用java代码去控制(操作:读取、修改)xml文件

2)xml解析两种方式
dom解析:面向对象的方法。
和html的dom类似。
对象:
Node对象
Document对象
Element对象
Attr对象
Text对象
Comment对象
dom树
sax解析:基于事件驱动的方法。

3)xml的dom解析工具
sun官方-jaxp工具 (java的标准)
非官方- jdom工具
非官方- dom4j (虽然不是标准,好用!!)

4)jaxp的dom解析工具

官方: 纳入jdk的规范中。 org.w3c.dom.* api

4.1 读取xml文件的步骤:
a)创建DocumentBuilderFactory对象
b)获取一个DocumentBuilder对象
c)调用parse方法去读取xml文件

4.2 写出xml文件的步骤:
a)创建TransformFacotory对象
b)获取一个Transform对象
c)调用transform方法写出内容到xml文件

总结:
1)junit工具(必须掌握)
2)xml语法(重点)
3)dtd约束(能写xml文件-- 手动根据dtd文件写有效的xml文档)
4)jaxp的dom解析api (必须回去练习)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: