.1 作为软件配置文件
.2 作为小型的 "数据库"
XML 语法(由 w3c 组织规定的)
标签名不能以数字开头, 中间不能有空格, 区分大小写. 有且仅有一个根标签.
属性:
可有多个属性, 但属性值必须用引号 (单引号或双引号) 包含, 但不能省略, 也不能单双混用.
文档声明:
<?xml version="1.0" encoding="utf-8"?>
encoding="utf-8": 打开或解析 xml 文档时的编码
注意: 保存 xml 文档时的编码和解析 xml 文档时的编码要保持一致, 才能避免中文乱码问题!
XML 解析
程序读取或操作 xml 文档
两种解析方式: DOM 解析 vs SAX 解析
DOM 解析原理:
一次性把 xml 文档加载成 Document 树, 通过 Document 对象得到节点对象, 通过节点对象访问 xml 文档内容(标签, 属性, 文本, 注释).
Dom4j 工具(基于 DOM 解析原理):
读取 xml 文档:
Document doc = new SAXReader().read("xml 文件");
节点:
nodeIterator(); 所有节点
element("名称") 指定名称的第一个子标签对象
elementIterator("名称"); 指定名称的所有子标签对象
elements(); 所有子标签对象
属性:
attributeValue("名称")指定名称的属性值
attribute("名称") 指定名称的属性对象
getName() 属性名称
getValue() 属性值
atributeIterator() 所有属性对象(Iterator)
attributes() 所有属性对象(List)
文本:
getText() 得到当前标签的文本
elementText("子标签名称") 得到子标签的文本
Dom4j 修改 xml 文档
1. 写出内容到 xml 文档
- XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)
- wirter.write(Document);
2. 修改 xml 文档的 API
增加:
DocumentHelper.createDocument() 增加文档
addElement("名称") 增加标签
addAttribute("名称","值") 增加属性
修改:
Attribute.setValue("值") 修改属性值
Element.addAtribute("同名的属性名","值") 修改同名的属性值
Element.setText("内容") 修改文本内容
删除
Element.detach(); 删除标签
Attribute.detach(); 删除属性
# 3.xPath 技术
3.1 引入
问题: 当使用 dom4j 查询比较深的层次结构的节点(标签, 属性, 文本), 比较麻烦!!!
3.2 xPath 作用
主要是用于快速获取所需的节点对象.
3.3 在 dom4j 中如何使用 xPath 技术
导入 xPath 支持 jar 包. jaxen-1.1-beta-6.jar
使用 xpath 方法
List<Node> selectNodes("xpath 表达式"); 查询多个节点对象
Node selectSingleNode("xpath 表达式"); 查询一个节点对象
3.4 xPath 语法
/ 绝对路径 表示从 xml 的根位置开始或子元素(一个层次结构)
// 相对路径 表示不分任何层次结构的选择元素.
* 通配符 表示匹配所有元素
[] 条件 表示选择什么条件下的元素
@ 属性 表示选择属性节点
and 关系 表示条件的与关系(等价于 &&)
text() 文本 表示选择文本内容
来源: http://www.jianshu.com/p/2443a6703830