DTD约束与xml文件的解析基础

DTD约束

1、XML DTD
1、什么是DTD?
DTD(Document Type Definition文档类型定义
作用:简单来说就是一个约束,约束XML的书写规范

2、什么是XML
XML(eXtensible Markup Language)可扩展性标记语言
作用:用来传输数据和存储数据(配置文件、数据交换)
课外:(“树结构” 概念)

3、XML的两种文档约束
DTD 和 Schema(不常用)。

4、XML格式要求(合法XML)
4.1)有且只有一个根节点;
4.2)由开始标签和结束标签组成;
4.3)XML标签区分大小写;
4.4)正确嵌套标签;
4.5)属性值须加引号;
4.6)特殊符号转义

&(逻辑与)  -->  &
>(大于)       -->  >
<(小于)       -->  &lt;
‘(单引号)      -->  &apos;
“(双引号)      -->  &quot;

4.7)XML中的空格会做保留,算一个元素。

5、▲使用DTD
5.1 在XML中加入DTD申明
1)内部申明:

<!DOCTYPE 根节点 [
                ……
            ]>
    2)外部申明:
<!DOCTYPE 文档根节点 SYSTEM “DTD文件名”>

5.2 DTD语法
元素定义、属性定义、实体定义(自学)。

    1)元素定义语法(DTD对元素的限制)
▲基本语法:
        <!ELEMENT 元素名称 元素类型>
▲元素类型:
        EMPTY       -表示该元素为空元素
        (#PCDATA)   -表示只有PCDATA的元素,不做延伸,放具体的数据  
        (e1,e2,e3……)    -表示该元素下带有子元素,分别是e1,e2,注意顺序
        ANY     -表示没有任何内容的元素
        (元素名)   -表示只出现一次的元素
▲元素限制:
        ,(顺序)
        |(或)
        *(0次或多次)
        +(1次或多次)
        ?(0次或1次)
        2)属性定义语法(DTD对属性的限制)
▲基本语法:
        <!ATTLIST 元素名称
            属性名称1 属性类型 设置说明
            属性名称2 属性类型 设置说明
            ……
                >
▲属性类型:
        CDATA       表示属性值为字符串
        (男|女) ""   表示只能填男或女,默认男
        ID          值为唯一的id
        ENTITY      表示实体,自学
▲设置说明:
        #REQUIRED   必须设置该属性
        #IMPLIED        可以设置也可不设置
        #FIXED      说明该属性的取值固定为一个值,需多测试"默认值"

2、▲XML解析*

.properties 和 .xml (两个配置文件)】

1、java中配置文件的三种配置位置与读取方式
1.1位置:
src根目录下:

当前类.class.getResourceAsStream("/config.(properties或xml)");

同包,跟读取的类同包:

当前类.class.getResourceAsStream("config.(properties或xml)");

WEB-INF(或其子目录下):

ServletContext sc= this.getServletContext();
InputStream sc.getResourceAsStream("/WEB-INF/config3.properties");

2、▲dom4j + xpath 解析xml文件
Xml解析一般分两种:

    一个是自带源生态的(效率低)
    另一个是第三方读取解析(dom4j)

方法:

    document.selectNodes(xpath);    
    查一组 例如:document.selectNodes("/persons/person");
    document.selectSingleNode(xpath);   查单个

核心类:

    SAXReader:用于加载流,读取xml文件
    Document:文档,使xml文件变成一个文档

xpath:相当于数据库的select语句一样
/ 定位路径
@ 属性

案例:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值