概念:
XML一种数据存储的可扩展的标记语言
优势:
阅读性好,容易操作。
缺点:
自定义标签过于随意,不利于团队开发。
基本语法:
- 申明版本信息和编码格式(建议配置好后自动生成)
- 用标签来决定DOM模型,且必须是双标签
- 可以自定义属性和属性值(值必须带引号)
- 必须有且只有1个根标签(否则报错)
- 正确的嵌套层级
- 特殊字符转码:<>用><代替等
命名规范:
- 参考Java命名规范
- 不能以xml字符开头
解析:
解析步骤:
- 准备一个或多个XML文档
- 导入第三方jar包——DOM4J
- 写代码读取数据
导包步骤:
- 下载好jar包(.jar文件)
- 复制到项目的lib文件夹下面(手动创建文件夹)
- 右键点击jar包,添加为库(idea倒数第二个)–>默认确定即可
解析技术:
DOM解析:
一次性加载到内存
优点:可以操作相关的DOM节点
缺点:文件过大容易导致内存溢出和加载时间过长
SAX解析:
以事件驱动逐行解析
优点:快速,内存不溢出
缺点:无法进行删除等操作
注意点:
用DOM解析如果执行删除等操作,操作的是加载到内存中的副本,而不是原文件本身。
具体操作(仅为DOM解析):
传统写法(逐级获取):
- new SAXReader();//创建一个SAXReader对象
- 对象.read(“xml文件路径”);//以DOM模型将xml文件加载到内存中
- dom.getRootElement();//获取root根目录/标签
- elements();//获取子节点集合
- getText();//获取文本内容,也可以调用其他方法
XPath写法(搜索匹配):
- 导入相关的jar包(jaxen),导包步骤查看上面。
- dom.selectSingleNode(“//查询语法”);//获取DOM节点更加灵活,类似于jQuery选择器与JS原生DOM
- 步骤2匹配的对象类型是Node,用Element语法需要向下转型
为了解决随意性问题,所以编写XML需要约束。
约束:
记得在书写XML的时候导入相关的约束文档。
DTD约束:
- [结构]定义可以书写的标签和属性,以及他们的顺序
- [数据]定义属性值的数据类型
Schema约束:
- [前奏]需要配置信息(本身也是xml文件)约束文档,引用地址,使用时约束
- [结构]定义可以书写的标签和属性,以及他们的顺序和个数,可以设置重复次数
- [数据]同上
不同处:
DTD需要把结构从头写到尾,且阅读性差,代码较短
Schema只需要写出主体结构,阅读性好,代码较长