解析方式
DOM:(文档对象模型)将整棵树一口气全部加载到内存当中,我们可以非常方便的操作,当整棵树特别大的时候,会有内存溢出的情况
SAX:一个节点一个节点的进行解析,不会出现内存溢出的情况
(节点: 标签、属性、文本甚至是换行都称之为节点)
org.dom4j.io.SAXReader`类: SAX解析器
* 构造方法:
* `SAXReader()`: 创建一个SAX解析器
* 成员方法:
* `Document read(String systemId)`: 读取XML文件, 返回一个Document对象
* `org.dom4j.io.OutputFormat`类: 配置XML输出格式
* `static OutputFormat createPrettyPrint()`: 创建一个用户输出美观格式的OutputFormat对象
* `void setEncoding(String encoding)`: 设置字符集
* `org.dom4j.io.XMLWriter`类: 用于向XML中写入数据的输出流
* 构造方法:
* `XMLWriter(OutputStream out)`: 使用字节流创建一个XMLWriter对象
* 成员方法:
* `void write(Document doc)`: 将Document对象中的数据写入到XML文件
* `org.dom4j.Document`接口: 代表一个XML文档
* `Element getRootElement()`: 获取根元素对象. 需要用根元素获取其他子元素
* `org.dom4j.Element`接口: 代表一个元素
* 获取元素信息
* `String getName()`: 获取元素名
* 元素增删改查
* 获取元素
* `List<Element> elements()`: 获取调用元素对象的所有子元素
* `List<Element> elements(String name)`: 获取所有的指定名称的子元素
* `Element element(String name)`: 获取第一个该名称的子元素对象
* `Element getParent()`: 获取当前元素的父元素对象
* 添加元素
* `Element addElement(String elementName)`: 在当前元素下添加指定名称的子元素
* 删除元素
* `boolean remove(Element child)`: 删除子元素
* 操作元素中的文本
* `String elementText(String name)`: 获取第一个该名称的子元素的文本内容
* `String getText()`: 获取当前元素对象的文本
* `void setText(String text)`: 设置当前元素对象的文本
* 操作元素的属性
* `String attributeValue(String name)`: 根据指定的属性名获取属性值
* `Element addAttribute(String name, String value)`: 添加或修改指定属性名的属性值
* `org.dom4j.DocumentHelper`类:
* `static Element createElement(String name)`: 使用指定名称作为元素名, 创建一个元素对象