xml

数据格式–XML

第一部分:xml的介绍

1.什么是XML
    XMl是可扩展标记语言的英文简称,它的特点是可以由用户自定义。
2.xml的用途
    xml的作用主要分为两个部分:一是用作配置文件,二是用于传输数据。   
3.xml的语法
    1.xml文档声明
        <?xml version="1.0" encoding="utf8"?>
    注:1.文档声明中必须要以<?xml开头,?>结尾。
        2.文档声明必须从文档的0行0列位置开始。
        3.文档声明的必须属性为:version,其值一般为1.0;而encoding是可选属性,值一般是utf8。
    2.元素内容
        1.元素是由开始标签,元素体,结束标签一起组成。如:<name>wgy</name>.
        2.一个xml文档,要有一个根元素。
        3.元素体可以是元素,也可以是文本。
    3.属性内容
        1.属性是元素的一部分,它必须要出现在元素的开始标签中。
        2.属性的定义格式:属性名=属性值,其中的属性值要用引号将它包裹。
        3.一个元素中,属性名不能同名。

注:在xml文档中,如果出现大量的转义字符,可以使用

第二部分:XML的约束

常见的xml约束:DTD约束,Schema约束

一.DTD约束
    1.什么是DTD约束
        DTD约束就是,文档类型定义,它是用来约束xml文档的;它规定了xml文档中的元素名称,子元素的名称以及顺序,元素体的内容,元素的属性等等。
    2.DTD的实际应用
        一般在开发中,自己编写DTD约束比较少,一般是通过引入DTD约束文档来编写相应的xml文档。
    3.DTD文档的引入
        1.可以通过在xml文档中嵌入DTD约束,只对当前xml文档有效。
            <!DOCTYPE web-app [
                DTD语法
            ]>
        2.可以在外部引入DTD约束。
            2.1.可以使用<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">引入位于同一目录下的DTD约束文档。
            2.2.可以使用<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">引入位于网络上的dtd约束文档。
    4.DTD的语法
        4.1元素声明:
            <!ELEMENT 元素名 元素描述>
                元素名:自定义
                元素描述:
                    常见类型:? * + () |
                    常见类型:#PCDATA表示元素体只能是文本,不能是子标签。  
        4.2属性声明:
            <!ATTRIST 元素名
                属性名 属性类型 约束
                属性名 属性类型 约束
                ...
            >
        元素名:自定义
        属性类型:
            ID :ID类型的属性用来标识元素的唯一性
            CDATA:文本类型
        约束:
            #PEQUIRED:说明属性是必须的
            #IMPLIED:说明属性是可选的
    ---->DTD实例:
        <?xml version="1.0" encoding="UTF-8"?>
        <!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
        <!--
            <!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
            表示在web-app标签下面有三个子标签,而且要按照顺序出现
                1.servlet:*代表着数量是任意的。
                2.servlet-mapping:*代表着数量是任意的。
                3.welcome-file-list:?代表着数量是1或者0
         -->
        <!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
        <!--
            <!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
            表示在servlet标签下面有三个子标签,而且要按照顺序出现
                1.servlet-name:必须要出现并且只能出现一次
                2.description:?代表着数量是1或者0
                3.(servlet-class|jsp-file):servlet-class或者jsp-file二选一,只能出现0或1次
         -->
        <!ELEMENT servlet-mapping (servlet-name,url-pattern+) >
        <!--
            <!ELEMENT servlet-mapping (servlet-name,url-pattern+) >
            表示在servlet-mapping标签下面有两个子标签,而且要按照顺序出现
                1.servlet-name:必须要出现并且只能出现一次
                2.url-pattern+:+代表着至少要出现一次  
         -->
        <!ELEMENT servlet-name (#PCDATA)>
        <!--
            <!ELEMENT servlet-name (#PCDATA)>
                设置servlet-name元素体中的内容只能为文本类型。
         -->
        <!ELEMENT servlet-class (#PCDATA)>
        <!ELEMENT url-pattern (#PCDATA)>
        <!ELEMENT description (#PCDATA)>
        <!ELEMENT jsp-file (#PCDATA)>

        <!ELEMENT welcome-file-list (welcome-file+)>
        <!ELEMENT welcome-file (#PCDATA)>

        <!ATTLIST web-app version CDATA #IMPLIED>
        <!-- 
            <!ATTLIST web-app version CDATA #IMPLIED>
            为web-app元素设置属性,属性名为version,类型为文本,是可选的
        --> 
二.Schema约束
    1.什么是schema约束
        schema约束是新的xml文档约束
        schema要比DTD强大很多,是DTD的替代者。
        schema本身也是xml文档,但是schema文档扩展名为xsd,而不是xml
        schema功能更加强大,数据类型更加完善
        schema支持名称空间

第三部分:解析XMl

在编写好xml文档后,为了要获取xml的内容,需要将xml解析。

1.xml的解析方式:
    DOM解析,SAX解析,PULL解析。

2.DOM解析方式
    原理:xml dom和html dom类似,xml dom将整个xml文档加载到内存中,生成一个DOM树,并且获取一个Document对象,然后通过Document对象来对DOM进行操作。
3.Dom4j的核心类
    1.SaxReader对象
        a.read()加载xml文档
    2.Document对象
        a.getRootElement()获得根元素
    3.Element对象
        a.elements(..)获得指定名称的所有子元素,可以不指定名称
        b.element(..)获得指定名称的第一个字元素,可以不指定名称
        c.getName()获得当前元素的元素名
        d.attributeValue(..)获得指定属性名的属性值
        e.elementText(..)获得指定名称子元素的文本值
        f.getText()获得当前元素的文本内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值