"XML"个人学习笔记

XML

一,XML入门

1.xml概述

  • 可扩展标记语言, 标签可以自定义

2.xml特点

  • xml所有标签都是自定义
  • xml语法严格,区分大小写; 要么全部小写,要么全部大写
  • xml描述数据

3.xml作用

  • 作为配置文件(在JavaEE中的SSM框架中常用)
  • 存储数据
  • 用来传输数据,通用数据交换格式(现在Json用的多,xml少)
  • 描述有关系的数据

4.xml语法

(1)文档声明
  • (必选项) <?xml version = "1.0" ?>
(2)元素(标签)
  • 文档中必须有且只能有一个根元素,其他标签都是这个根标签的子标签或孙标签
  • 元素需要正确闭合
    [1]包含标签主体:
   <mytag>somecontent</mytag>

[2]不含标签主体:

      <mytag/>
  • 元素需要正确的嵌套,不允许有交叉嵌套

  • 元素名称区分大小写
    [1]元素名称区分大小写
    [2]数字不能开头
    [3]标签之间不能有空格

  • 属性
    [1] 属性值必须用引号引起来.单双引号都行
    [2]在一个标签里面属性不能重复

  • 注释
    [1] 文档声明前面不能有注释
    [2] 注释不能嵌套

  • 特殊符号和CDATA区
    [1] 在XML中有5个预定义的实体引用
    在这里插入图片描述

    [2] CDATA内部的所有东西都会被解析器忽略,当做文本

    • 语法
    <![CDATA[ 内容 ] ]>

二,XML约束

1. xml约束概述

  • 约束就是xml的书写规则;
  • 约束文档定义了在XML中允许出现的元素(标签)名称、属性及元素(标签)出现的顺序等等。

2.dtd约束

2.1 引入方式
2.1.1 内部引入
 <!DOCTYPE 根元素 [元素声明]>
2.1.2 外部引入; dtd是一个独立的文件 .dtd
  • [常用]本地DTD
 <!DOCTYPE 根元素 SYSTEM "文件名">
  • 网络DTD
   <!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">

2.2 语法

2.2.1 元素
(1)元素 : <!ELEMENT 元素名称 元素组成>
  • 元素组成:EMPTY,ANY ,(子元素) ,(#PCDATA)
  • 如果出现子元素: ?(出现0次或1次),
    *(出现0次或多次),
    +(出现1次或多次) 表示子元素出现的个数.
    |或者(只能出现一个)
    , 代表子元素出现必须按照顺序
(2)属性<!ATTLIST 元素名称 属性名称 属性类型 属性使用规则>
  • 属性类型: ID,枚举,CDATA
  • 使用规则: #REQUIRED:属性值是必需的
    #IMPLIED :属性不是必需的
    #FIXED value:属性值是固定的
    ID使用:字母开头

3. schema约束

3.1 schema与dtd的区别
  • XMLSchema符合XML语法结构。

  • DOM、SAX等XMLAPI很容易解析出XML Schema文档中的内容。

  • XMLSchema对名称空间支持得非常好。

  • XMLSchema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。

  • XMLSchema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。

  • XMLSchema不能像DTD一样定义实体,比DTD更复杂.

3.2 根据schema约束写xml文件步骤

(1) 查出Schema文档,找出根元素
(2)根元素来自哪个名称空间
(3) 这个名称空间和哪个xsd文件对应(指定约束的路径)
(4)schemaLocation不是关键字,来自一个标准的名称空间

三,XML解析【掌握】

1. xml解析方式

1.1 DOM解析
(1) 概述:
  • 将xml文档加载到内存,形成一颗dom树(document对象),将文档的各个组成部封装为一些对象。
(2) 优缺点:
  • 优点: 因为,在内存中会形成dom树,可以对dom树进行增删改查。
  • 缺点: 如果xml文件太大, dom树非常占内存,解析速度慢。
(3) 节点
  • Document:文档节点
  • Element:元素(标签)节点
  • Text:文本节点
  • Attribute:属性节点
  • Comment:注释节点
1.2 SAX解析
1.2.1 概述:
  • 逐行读取,基于事件(函数或者方法)驱动
1.2.2 优缺点:
  • 优点:内存占用很小,速度快
  • 缺点:只能读取,不能回写

2.常用xml解析器(jar包)

  • [常用] DOM4J:
    document for java 民间方式,但是是事实方式。非常好。 支持dom和sax.
  • JDOM
  • JSOUP: 爬虫, 解析html .
  • JAXP:sun公司提供的解析。支持dom和sax.

3.Dom4J(Dom for Java) 【重点】

3.1 使用步骤

(1) 导入jar包 dom4j-1.6.1j.jar

(2) 创建解析器

  • SAXReader reader = new SAXReader();

(3) 读取xml 获得document对象

  • Document document = reader.read(xml对应的流)

(4) 得到根元素

  • Element rootElement = document.getRootElement();
3.2 常见的API
  • List list= element.elements(); 获取所有子元素节点
  • element.attributeValue(“属性名”)或者element.attribute(“属性名”).getValue(); 获取节点属性的值
  • element.getText(); 获得节点的文本值

4.XPath的使用,基于dom4J【掌握】

4.1 概述
  • Xpath定义了一种规则,专门用于查询xml, 可以认为xpath是dom4J的扩展
4.2 使用步骤

(1)导入jar包 jaxen…jar(当前资料里是: jaxen-1.1-beta-6.jar) 注意: 两个(dom4j的jar包和xpath的jar包)
(2)创建解析器

  • SAXReader reader = new SAXReader();

(3) 解析xml 获得document对象

  • Document document = reader.read(is);
4.3 常见的API

(1) document.selectSingleNode(“xpath语法”); 获得一个节点(标签,元素)
(2) document.selectNodes(“xpath语法”); 获得多个节点(标签,元素)

具体学习最好查阅 " W3C "

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值