Day05_JAVAEE系列:XML

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一样

      特殊字符    转义字符

    <    &lt;

    >    &gt;

    空格    &nbsp;

    ...

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 (必须回去练习)

时间: 2024-08-04 10:48:49

Day05_JAVAEE系列:XML的相关文章

微软BI 之SSIS 系列 - XML Task 中XSLT 样式表转换错误记录

开篇介绍 此文章专门记录 XSLT 样式表转换过程中的语法问题 错误一 值与属性的倒置 修改了几次样式表,但还是一如既往的报错,报错信息如下: [XML Task] Error: An error occurred with the following error message: "Attribute and namespace nodes cannot be added to the parent element after a text, comment, pi, or sub-eleme

SpringBoot填坑系列---XML方式配置数据库

本次只是简单的运用SpringBoot搭建框架,对其原理并不做深入的探究 1.POM文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaL

Day05_JAVAEE系列:Junit

Junit 单元测试开发工具:myeclipse10 内部集成的junit的库 1)什么是junit?     junit是一个专业的编写测试代码的工具 2)建立junit测试类的步骤:     2.1 new --> Junit Test Case     2.2写上测试类名(建议 Test+目标类名称) -->选中目标类--->next     2.3选中需要测试的方法 -->finish     2.4生成一个Junit的测试类,且导入了junit的jar包 mark:以后再

【Java】Java XML 技术专题

XML 基础教程 XML 和 Java 技术 Java XML文档模型 JAXP(Java API for XML Parsing) StAX(Streaming API for XML) XJ(XML Enhancements for Java) XML 验证 XPath XQuery XSL 转换处理器 XStream 数据绑定 本专题汇总了大量面向 Java 开发人员的 XML 技术文章和教程,内容涉及 XML 基础.Java XML 的文档模型.编程 API 与数据绑定框架以及 Java

C#开源项目大全

商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK Excel-读写组件-ExcelLibrary .NET集成开发环境-MonoDevelop 电话软交换机-FreeSWITCH 开源操作系统-Cosmos 坦克机器人战斗仿真引擎-Robocode GIS控件-MapWindow .NET的ORM框架-MyBatis.NET Web开发工具-Webb

C#开源大全项目

商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK Excel-读写组件-ExcelLibrary .NET集成开发环境-MonoDevelop 电话软交换机-FreeSWITCH 开源操作系统-Cosmos 坦克机器人战斗仿真引擎-Robocode GIS控件-MapWindow .NET的ORM框架-MyBatis.NET Web开发工具-Webb

C#开源大全

商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK Excel-读写组件-ExcelLibrary .NET集成开发环境-MonoDevelop 电话软交换机-FreeSWITCH 开源操作系统-Cosmos 坦克机器人战斗仿真引擎-Robocode GIS控件-MapWindow .NET的ORM框架-MyBatis.NET Web开发工具-Webb

C#开源大全--汇总

商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK Excel-读写组件-ExcelLibrary .NET集成开发环境-MonoDevelop 电话软交换机-FreeSWITCH 开源操作系统-Cosmos 坦克机器人战斗仿真引擎-Robocode GIS控件-MapWindow .NET的ORM框架-MyBatis.NET Web开发工具-Webb

Beautiful Soup 4.2.0 文档

Beautiful Soup 4.2.0 文档 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间. 这篇文档介绍了BeautifulSoup4中所有主要特性,并且有小例子.让我来向你展示它适合做什么,如何工作,怎样使用,如何达到你想要的效果,和处理异常情况. 文档中出现的例子在Python2.7和Python3.2中的执行结果相