0%

XML从入门到放弃

概念:

XML一种数据存储的可扩展的标记语言

优势:

阅读性好,容易操作

缺点:

自定义标签过于随意,不利于团队开发。

基本语法:

  1. 申明版本信息和编码格式(建议配置好后自动生成)
  2. 用标签来决定DOM模型,且必须是双标签
  3. 可以自定义属性和属性值(值必须带引号)
  4. 必须有且只有1个根标签(否则报错)
  5. 正确的嵌套层级
  6. 特殊字符转码:<>用><代替等

命名规范:

  1. 参考Java命名规范
  2. 不能以xml字符开头

解析:

解析步骤:

  1. 准备一个或多个XML文档
  2. 导入第三方jar包——DOM4J
  3. 写代码读取数据

导包步骤:

  1. 下载好jar包(.jar文件)
  2. 复制到项目的lib文件夹下面(手动创建文件夹)
  3. 右键点击jar包,添加为库(idea倒数第二个)–>默认确定即可

解析技术:

DOM解析:

一次性加载到内存
优点:可以操作相关的DOM节点
缺点:文件过大容易导致内存溢出和加载时间过长

SAX解析:

以事件驱动逐行解析
优点:快速,内存不溢出
缺点:无法进行删除等操作

注意点:

用DOM解析如果执行删除等操作,操作的是加载到内存中的副本,而不是原文件本身。

具体操作(仅为DOM解析):

传统写法(逐级获取):

  1. new SAXReader();//创建一个SAXReader对象
  2. 对象.read(“xml文件路径”);//以DOM模型将xml文件加载到内存中
  3. dom.getRootElement();//获取root根目录/标签
  4. elements();//获取子节点集合
  5. getText();//获取文本内容,也可以调用其他方法

XPath写法(搜索匹配):

  1. 导入相关的jar包(jaxen),导包步骤查看上面。
  2. dom.selectSingleNode(“//查询语法”);//获取DOM节点更加灵活,类似于jQuery选择器与JS原生DOM
  3. 步骤2匹配的对象类型是Node,用Element语法需要向下转型

为了解决随意性问题,所以编写XML需要约束

约束:

记得在书写XML的时候导入相关的约束文档。

DTD约束:

  • [结构]定义可以书写的标签和属性,以及他们的顺序
  • [数据]定义属性值的数据类型

Schema约束:

  • [前奏]需要配置信息(本身也是xml文件)约束文档,引用地址,使用时约束
  • [结构]定义可以书写的标签和属性,以及他们的顺序和个数,可以设置重复次数
  • [数据]同上

不同处:

DTD需要把结构从头写到尾,且阅读性差,代码较短
Schema只需要写出主体结构,阅读性好,代码较长