| dom4j | jdom |
创建 | 一般采用面向接口编程,Document、Element、Attribute等均为接口,要创建这些元素一般调用或委托DocumentFactory(单例)的工厂方法完成; 元素之间的关系可由工厂方法自动维护 | Document、Element、Attribute等均为类,直接使用其构造器创建对象; 元素之间的关系需要编程维护 |
修改 | 删除某个节点时,需要先得到节点对象,然后调用父节点的remove()方法; 在特定位置插入节点,需要得到父节点的所有子节点List,并在List特定位置插入构造器创建的子节点(一般为DefaultElement对象) | 删除某个节点时,不需要得到节点对象,可根据节点名直接调用父节点的removeChild()方法; 在特定位置插入节点,仅需要调用父节点带索引的addContent()方法将创建的节点对象插入即可 |
保存 | 文档格式由OutputFormat对象(可用工厂方法创建)控制。以createPrettyPrint()方法创建的对象为例,常用设置如下: l setExpandEmptyElements():是否扩展空元素 l setSuppressDeclaration():是否输出xml声明,不输出时会预留空行 l setOmitEncoding():是否输出xml声明中的编码信息 l setNewLineAfterDeclaration():是否在xml声明后预留空行,默认留空行 l setLineSeparator():设置行分隔符,默认为\n,一般设置为\r\n 文档输出保存由XMLWriter对象的write()方法完成 | 文档格式由Format对象(可用工厂方法创建)控制。以getPrettyFormat()方法创建的对象为例,常用设置如下: l setExpandEmptyElements():是否扩展空元素 l setOmitDeclaration():是否输出xml声明,不输出时不预留空行 l setOmitEncoding():是否输出xml声明中的编码信息; l -- 无法设置xml声明后是否预留空行,默认不留 l setLineSeparator():设置行分隔符,默认为\r\n 文档输出保存由XMLOutputter对象的output()方法完成 |
读取 | 使用SAXReader对象的read()方法 | 使用SAXBuilder对象的build方法 |