day14xml

来源:互联网 发布:淘宝原创衣服品牌 编辑:程序博客网 时间:2024/03/29 17:19

xml

语言是具有结构性的标记语言, 可以灵活的存储一对多的数据关系.

特点:

  • 用来存储一对多的数据
  • 用来当做配置文件存储数据

组成部分:

文档声明

​ 在编写XML文档时,需要先使用文档声明来声明XML文档。且必须出现在文档的第一行
​ 格式:

元素

​ xml中的元素其实就是一个个的标签

书写规范:

  • [ ] ​ 区分大小写;

  • [ ] ​ 以字母下划线开头;

  • [ ] ​ 不能是xml等开头;

  • [ ] ​ 字符之间不能空格,不能用冒号

    #### a: 包含标签体

​ 例:

<student>    <name>zhangsan</name>    <age>18</age></student>

b: 不包含标签体

​ 理解: 只有最外层的一个简括号,括号用/标识结束, 内部的数据都用/属性/来编写

<student name="zhangsan" age="18" />

元素的属性

​ 一个元素多个属性,不能重复,每个属性都有名称和值。
​ 属性值一定要用引号(单引号或双引号)引起来。

注释

​ 格式:

一个XML文件里如何引入DTD文件约束:

​ //写在XML文档声明下方,即第二行。指定根标签,文件名等。
​ 引入了写好的DTD文件后, 格式就必须跟DTD文件保持一致。
​ 注意:在使用eclipse创建xml文件时,通过指定dtd文件的方式,指定文件的路径,可以创建默认的xml文件,并自动生成声明,引用约束,部分内容等。

约束文件:

XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束

DTD:

一个DTD文件里的内容(一般不自己写)

<?xml version="1.0" encoding="UTF-8"?>//文档声明,编码格式必须用UTF-8.否则无法识别中文等    <!ELEMENT 书架(书+)>//指的是对根标签进行约束,不缩进        <!ELEMENT 书 (书名,作者,售价)>//以下全部是缩进,是所有的各级非根标签约束        <!ELEMENT 书名 (#PCDATA)>        <!ELEMENT 作者 (#PCDATA)>        <!ELEMENT 售价 (#PCDATA)>

​ 注意:标签约束有指定的格式:

约束文件Schema:

  • [ ] 符合XML语法结构;
  • [ ] 支持名称空间;
  • [ ] 相比DTD支持更多的数据类型;
  • [ ] 自身也是一个XML文档,称为模式文档,符合该约束的文档称为实例文档。
  • [ ] 该文档的拓展名为:.xsd

格式:

XML解析:

DOM:
​ 一次将整个文件加载,效率高,内容占用大
SAX:
​ 一个一个结点解析
​ 不占内存,效率低(访问最后一个结点需要遍历)

解析有两种方式:

​ (DOM提供的官方解析,用的不多)
​ (DOM解析方式)使用Dom4j组织提供的第三方库Dom4JUtils工具类实现解析

Dom4J的常用方法:

Dom4J提供获取Document对象:

SAXReader sr = new SAXReader();//Dom4J的jar包中提供的类,是解析器对象。Document document = sr.read("D:\...");//通过SAXReader对象调用read(),获取该XML文件的Document对象,传入URL物理地址,或者字符或字节流        

通过Document对象调用一般方法:

Element getRootElement();//获取根元素对象Element getRootElement() ://获取根元素对象(根标签)

通过Element对象调用:

List elements() ://获取所有的子元素(重要方法,可以添加元素到集合中,写会到Document中,有索引可以操作)List elements(String name)://根据指定的元素名称来获取相应的所有的子元素Element element(String name)://根据指定的元素名称来获取子元素对象,如果元素名称重复,则获取第一个元素 String  elementText(String name) ://根据指定的子元素名称,来获取子元素中的文本String  getText() ://获取当前元素对象的文本void setText(String text)://设置当前元素对象的文本

操作某一元素的属性内容:

String attributeValue(String name)://根据指定的属性名称获取其对应的值public Element addAttribute(String name,String value)://根据指定的属性名称和值进行添加或者修改BeanUtils的常用方法

DocumentHelper类:

静态方法:createElement(String str);//添加一个元素,可以通过元素设置其文本。