DOM操作
1.通过节点关系查找节点
1 从一个节点出发开始查找
2 parentNode: 获取当前元素的父节点。
3 childNodes:获取当前元素的所有下一级子元素。
4 firstChild:获取当前节点的第一个子节点。
5 lastChild:获取当前节点的最后一个子节点。
6 nextSibling:获取当前节点的下一个节点。(兄节点)
7 previousSibling:获取当前节点的上一个节点。(弟节点)
2.获得节点对象的信息
每个节点都包含的信息的,这些属性是:
nodeType: 节点类型
nodeName: 节点名称
nodeValue: 节点值
3.创建新节点
document.createElement("标签名") 创建新元素节点
elt.setAttribute("属性名","属性值") 设置属性
elt.appendChild(e) 添加到elt中最后的位置
elt.insertBefore(new,child) 添加到elt中,child之前
// 参数1:要插入的节点
// 参数2:插入目标元素的位置
elt.removeChild(eChild) 删除指定的子节点
4.Dom4j工具
1.使用步骤:
1)导入dom4j的核心包。dom4j-1.6.1.jar
2)编写Dom4j读取xml文件代码
1 public static void main(String[] args){
2 try{
3 //1.创建一个xml解析器对象
4 SAXReader reader = new SAXReader();
5 //2.读取xml文档,返回Document对象
6 Document doc = reader.read(new File("./src/contact.xml"));
7 System.out.println(doc);
8 }catch(DocumentException e){
9 e.printStackTrace();
10 throw new RuntimeException(e);
11 }
12 }
1 XML基础 2 1)XML的作用 3 1.1 作为软件配置文件 4 1.2 作为小型的“数据库” 5 2)XML语法(由w3c组织规定的) 6 标签: 7 标签名不能以数字开头,中间不能有空格,区分大小写。有且仅有一个根标签。 8 属性: 9 可有多个属性,但属性值必须用引号(单引号或双引号)包含,但不能省略,也不能单双混用。 10 文档声明: 11 <?xml version="1.0" encoding="utf-8"?> 12 encoding="utf-8": 打开或解析xml文档时的编码 13 注意: 14 保存xml文档时的编码 和 解析xml文档时的编码要保持一致,才能避免中文乱码问题! 15 3)XML解析 16 程序读取或操作xml文档 17 18 两种解析方式: DOM解析 vs SAX解析 19 20 DOM解析原理:一次性把xml文档加载成Document树,通过Document对象得到节点对象,通过节点对象访问xml文档内容(标签,属性,文本,注释)。 21 22 Dom4j工具(基于DOM解析原理): 23 读取xml文档: 24 Document doc = new SAXReader().read("xml文件"); 25 26 节点: 27 nodeIterator(); 所有节点 28 标签: 29 element("名称") 指定名称的第一个子标签对象 30 elementIterator("名称"); 指定名称的所有子标签对象 31 elements(); 所有子标签对象 32 属性: 33 attributeValue(“名称”) 指定名称的属性值 34 attribute("名称") 指定名称的属性对象 35 getName() 属性名称 36 getValue() 属性值 37 atributeIterator() 所有属性对象(Iterator) 38 attributes() 所有属性对象(List) 39 文本: 40 getText() 得到当前标签的文本 41 elementText("子标签名称") 得到子标签的文本 42
2.修改xml文档
1 2.1 写出内容到xml文档 2 XMLWriter writer = new XMLWriter(OutputStream, OutputForamt) 3 wirter.write(Document); 4 5 2.2 修改xml文档的API 6 增加: 7 DocumentHelper.createDocument() 增加文档 8 addElement("名称") 增加标签 9 addAttribute("名称",“值”) 增加属性 10 修改: 11 Attribute.setValue("值") 修改属性值 12 Element.addAtribute("同名的属性名","值") 修改同名的属性值 13 Element.setText("内容") 修改文本内容 14 删除 15 Element.detach(); 删除标签 16 Attribute.detach(); 删除属性
============DOM解析 vs SAX解析========
|
DOM解析 |
SAX解析 |
|
原理: 一次性加载xml文档,不适合大容量的文件读取 |
原理: 加载一点,读取一点,处理一点。适合大容量文件的读取 |
|
DOM解析可以任意进行增删改成 |
SAX解析只能读取 |
|
DOM解析任意读取任何位置的数据,甚至往回读 |
SAX解析只能从上往下,按顺序读取,不能往回读 |
|
DOM解析面向对象的编程方法(Node,Element,Attribute),Java开发者编码比较简单。 |
SAX解析基于事件的编程方法。java开发编码相对复杂。 |
2.1 写出内容到xml文档
XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)
wirter.write(Document);
2.2 修改xml文档的API
增加:
DocumentHelper.createDocument() 增加文档
addElement("名称") 增加标签
addAttribute("名称",“值”) 增加属性
修改:
Attribute.setValue("值") 修改属性值
Element.addAtribute("同名的属性名","值") 修改同名的属性值
Element.setText("内容") 修改文本内容
删除
Element.detach(); 删除标签
Attribute.detach(); 删除属性

浙公网安备 33010602011771号