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解析面向对象的编程方法(NodeElementAttribute,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();  删除属性

posted @ 2018-11-15 10:42  初入IT行业的老年选手  阅读(114)  评论(0)    收藏  举报