1.什么是xml: XML指可扩展标记语言,设计宗旨是传输数据,而非显示数据,其焦点是数据的内容,
XML标签没有被预定义,需自行定义标签,XML被设计为具有自我描述性,XML语法严格。
2.xml的用处: 数据存储,配置文件,数据传输。
3.基本语法:
文档声明:(必须写在文档的第一行) <?xml version="1.0" encoding="UTF-8"?>
规则:所有XML元素都必须有关闭标签,对大小写敏感,必须正确地嵌套,文档必须有根元素
属性值必须加引号。
实体引用:<(小于), >(大于), &(&号), '(单引号), "(双引号)
元素:名称可以含字母,数字以及其他字符,但不能以数字、标点符或者xml开始,名称不能包含空格。
文本:<![CDATA[ 里面的数据不会解析,会原样显示 ]]>
4.xml约束: 规定文档当中只能写哪些标签,并且会给一些提示。
DTD约束:内部dtd,在xml当中定义的dtd,但是不推荐使用。
外部dtd,在外部文件当中单独定义的dtd <!DOCTYPE 名称 SYSTEM "***.dtd">(本地)
<!DOCTYPE 名称 PUBLIC "命名空间" "***.dtd">(网络)
DTD语法:<!ELEMENT web-app (servlet*,servlet-mapping*,wel-file-lis?)>
<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
<!ELEMENT servlet-name (#PCDATA)> (里面存放的必须是文本)
<!ELEMENT welcome-file-list (welcome-file+)>
括号里面的必须按顺序出现,*代表出现任意次,?最多出现一次,|两者必须出现一次,
+代表至少有一个,没有*、?、|、+等符号的必须出现一次。
学习要求:不要求自己写出来,能看懂就行。
5.schema约束:编写根标签。
引用约束地址 xsi:schemaLocation="默认空间 约束地址.xsd"
(固定格式)引用实例名称空间 xmlns:xsi="http://www.w3.org/2001/XMLSchema"
默认名称空间 xmlns="默认空间"
schema语法:复杂标签:标签当中还有子标签。 简单标签:标签当中没有子标签。 type:别名。
想用的话得在标签中加上 xsi:schemaLocation="http://www.example.org/student student.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.org/student"
6.xml解析:
文档结构:XML采用树状结构。 用结点的方式来表示整个xml。
结点:文档结点(xml文件),元素结点(使用<>的标签),
属性结点(元素上属性名="属性值"),文本结点(元素之间的内容)。
7.DOM解析:
什么是DOM:文档对象模型,把文档中的成员描述成一个个对象。
使用Java代码操作XML 或者 js代码操作HTML。
DOM解析特点:在加载的时候,一次性的把整个XML文档加载进内存,在内存中形成一棵树。
以后用代码操作Document,其实内存中的DOM树,与本地磁盘的XML无关。
由于操作的是内存当中的dom,需要进行同步。
缺点:若XML文件过大,可能造成内存溢出。
DOM解析(查询)步骤:创建解析器工厂,
通过解析器工厂得到解析器,
通过解析器得到document对象,
获取具体的结点内容。
//1.创建解析器工厂,
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//2.通过解析器工厂得到解析器,
DocumentBuilder db = dbf.newDocumentBuilder();
//3.通过解析器得到document对象,
Document doc = db.parse("src/Test.xml");
//4.获取具体的结点内容。
NodeList list = doc.getElementsByTagName("name");
Node name = list.item(1);
System.out.println(name.getTextContent());
8.DOM修改元素: 获取所有指定结点
获取要修改的结点
修改元素内容
从内存写到文档做同步操作
9.DOM添加元素: 创建一个结点
设置元素内容
获取要添加元素的父结点
添加结点
从内存写到文档做同步操作
10.DOM删除元素: 获取一个结点
获取该结点的父结点,从父结点当中移除
从内存写到文档做同步操作
11.添加元素属性:获取要添加属性的结点
把获取的结点强制转换成element
设置属性
从内存写到文档做同步操作
12.DOM4J: DOM4J是dom4j.org出品的一个开源XML解析包
dom4j是一个十分优秀的JavaXML API,具有性能优异,功能强大和极其易使用的特点,
它的性能超过sun公司官方的dom技术,同时,它也是开放源代码的软件。
已经是必须使用的jar包,Hibernate用它来读写配置文件。
13.DOM4J获取所有指定标签内容:
创建SAXReader
获取根元素
根据名称获取根元素下所有的标签
遍历每一个子元素
获取指定名称的元素
获取标签当中的文本
14.DOM4J添加元素:
创建SAXReader
获取根元素
给根元素添加元素和属性,并返回添加的元素
读写