`
chilongxph
  • 浏览: 138285 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用dom4j操作xml文档

XML 
阅读更多
1. 获取文档对象:
public static Document getDocument(String str){
        File file=new File(str);
        SAXReader reader = new SAXReader();
        Document document = null;
        try
        {
            FileReader fr= new FileReader(file);
            document = reader.read(fr);
        } catch (FileNotFoundException e)
        {
                    e.printStackTrace();
        } catch (DocumentException e)
        {
            e.printStackTrace();
        }
        return document;
       
    }

2. 保存文档对象
public void saveDoc(String strXml, Document document) {
try {
XMLWriter output = new XMLWriter(new FileWriter(new File(strXml)));
//美化格式
OutputFormat format=new OutputFormat(" ",true);
OutputFormat.createPrettyPrint();
output.write(document);
output.close();

} catch (IOException e) {
logger.error("-------->document save failed:-->"+e.getMessage());
e.printStackTrace();

}
}
3. 检验一个节点是否已经存在
public boolean isUserExists(User user, String strXml) {
String nodes = "//users/user[@userName='" + user.getUserName() + "']";
// strXml:like : D:/workspace/on-nets-phaseII/src/config/test.xml
Document document = ConfigFileTool.getDocument(strXml);
// nodes的数据形式:"//roles/role"
List<Object> userList = document.selectNodes(nodes);
if (null != userList && userList.size() > 0) {
return false;
}

return true;
}
4. 添加一个节点:
public boolean addUser(User user, String strXml) {
if (isUserExists(user, strXml)) {
String uid = getStr();
Document document = ConfigFileTool.getDocument(strXml);
List list = document.selectNodes("users");
Element root = (Element) list.get(0);
Element userElement = root.addElement("user");
userElement.addAttribute("userId", uid);
userElement.addAttribute("userName", user.getUserName());
userElement.addAttribute("pwd", user.getPwd());
userElement.addAttribute("roles", user.getRoles());
saveDoc(strXml, document);
return true ;

}else{
logger.error("can't add the same user");
  return false;
 
}
}
5. 删错一个节点
public boolean delUser(String uname, String strXml) {
String nodes = "//users/user[@userName='" + uname + "']";
Document document = ConfigFileTool.getDocument(strXml);
List<Object> userList = document.selectNodes(nodes);
Element userEle = (Element) userList.get(0);
Element root = document.getRootElement();
boolean bl = userEle.getParent().remove(userEle);
// boolean bl=root.remove(userEle);
saveDoc(strXml, document);
return bl;

}
6. 修改一个节点
public boolean modifyUser(User user, String strXml) {
String nodes = "//users/user[@userId=" + user.getUserId() + "]";
// strXml:like : D:/workspace/on-nets-phaseII/src/config/test.xml
Document document = ConfigFileTool.getDocument(strXml);
// nodes格式"//roles/role"
List<Element> userList = document.selectNodes(nodes);
if (null != userList && userList.size() > 0) {
Element userEle = userList.get(0);
userEle.attribute("userName").setValue(user.getUserName());
userEle.attribute("pwd").setValue(user.getPwd());
userEle.attribute("roles").setValue(user.getRoles());
saveDoc(strXml, document);
return true;
}
return false;
}
7. 根据某个节点属性,来查询节点
public List<Element> findUserByName(String username, String strXml) {
String nodes = "//users/user[@userName='" + username + "']";
// strXml:like : D:/workspace/on-nets-phaseII/src/config/test.xml
Document document = ConfigFileTool.getDocument(strXml);
// nodes格式"//roles/role"
List<Element> userList = document.selectNodes(nodes);
return userList;

}
8. 获取所有的节点
public List<Element> findAllUsers(String strXml) {
String nodes = "//users/user";
// strXml:like : D:/workspace/XXX/src/config/test.xml
Document document = ConfigFileTool.getDocument(strXml);
// nodes格式"//roles/role"
List<Element> userList = document.selectNodes(nodes);

return userList;
}
9.动态查询:
public List findUsers(String uname, String role, String strXml) {
StringBuffer strbuf = new StringBuffer("//users/user");
//System.out.println(">>>>>>>>" + role);
if (null == uname) {
uname = "";
}
if (null == role) {
role = "";
}
if ("".equals(uname) && "".equals(role)) {

}
if ("".equals(uname) && !"".equals(role)) {
strbuf.append("[@roles='" + role + "']");
}
if (!"".equals(uname) && "".equals(role)) {
strbuf.append("[@userName='" + uname + "']");

}
if (!"".equals(uname) && !"".equals(role)) {
strbuf.append("[@userName='" + uname + "']");
strbuf.append("[@roles='" + role + "']");

}
String nodes = strbuf.toString();
// strXml:like : D:/workspace/on-nets-phaseII/src/config/test.xml
Document document = ConfigFileTool.getDocument(strXml);
// nodes格式"//roles/role"
List userList = document.selectNodes(nodes);

return userList;
}

个人扒文档整的,各位大侠有何指正,忘不吝赐教
分享到:
评论

相关推荐

    dom4j读写xml文档实例

    要使用DOM4J读取XML文档,首先需要创建一个`SAXReader`对象,然后调用`read`方法传入XML文件路径。这将返回一个`Document`对象,我们可以从中获取所有元素信息。 ```java File file = new File("path_to_xml_file")...

    详细介绍使用Dom4j读取xml文件的方法

    Dom4j便是一款功能强大且易于使用的Java库,它提供了非常简洁的API来读取、写入以及修改XML文档。本文将详细介绍如何使用Dom4j读取XML文件,并通过一个具体示例来进行深入探讨。 #### 二、环境搭建与依赖引入 在...

    读写超大类xml文件,使用dom4j读写xml文件的工具类

    基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。

    DOM4j操作xml文件

    DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件

    使用dom4j读取xml四种方法

    Dom4j作为一款简洁高效的Java库,被广泛应用于解析、操作XML文档。本文将详细介绍使用dom4j读取XML文件的四种常见方法,并通过示例代码帮助读者更好地理解和掌握这些技术。 #### 方法一:使用`SAXReader`与`...

    使用Maven管理项目,实现DOM4j操作XML文件

    DOM4j则是一个强大的Java库,用于处理XML文档,提供了丰富的API来实现XML的读取、写入、修改等操作。在这个示例中,我们将深入探讨如何利用Maven管理和DOM4j来操作XML文件。 首先,让我们了解一下Maven。Maven是...

    dom4j解析xml文件的压缩包

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、查询和修改变得简单。这个压缩包包含了DOM4J的完整版本,适用于那些希望在Java项目中使用DOM4J进行XML操作的开发者...

    使用DOM4J对XML文件操作-添加、修改、删除、获取元素节点

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。在本教程中,我们将深入探讨如何使用DOM4J来执行基本的XML操作,包括添加元素、修改元素、删除...

    dom4j解析xml文件(增删改查)

    在“dom4j解析xml文件(增删改查)”这个主题中,我们将深入探讨如何使用DOM4J来实现XML文档的四种基本操作:增加元素、删除元素、更新元素内容以及查询元素。 首先,让我们了解DOM4J的基本用法。在解析XML文件时,...

    java中用dom4j读取xml

    1. **创建Document对象**:首先,我们需要使用`DocumentFactory`类创建一个`Document`对象,它是DOM4J中表示整个XML文档的顶级节点。 ```java import org.dom4j.Document; import org.dom4j.DocumentFactory; ...

    使用DOM4j解析XML文件

    在使用DOM4j解析XML文件时,首先需要导入DOM4j的相关包,如`SAXReader`用于读取XML文件,`Document`表示整个XML文档,`Element`表示XML文档中的元素,以及`Attribute`表示元素的属性。以下是一个使用DOM4j解析XML...

    dom4j解析xml详解

    - **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成...

    DOM4J读取XML

    DOM4J是一个轻量级、高性能且易于使用的Java库,用于处理XML文档。它提供了类似于DOM、SAX和JDOM的API,但又在其基础上进行了优化,使得在读取、写入、查询和修改XML文档时更加高效与便捷。本文将详细介绍如何使用...

    dom4j解析xml文件代码示例

    在本示例中,我们将深入探讨如何使用DOM4J解析XML文件,以`CacheInit.java`作为我们的核心代码示例,并参考`emailTemplateConfig.xml`作为实际操作的对象。 首先,让我们了解XML(eXtensible Markup Language)。...

    XSD使用dom4j校验XML

    本篇文章将深入探讨如何利用DOM4J库来实现XSD对XML文档的校验,以确保XML文件符合预先设定的数据结构规则。 首先,理解XSD的作用至关重要。XSD文件定义了XML文档的元素、属性、数据类型以及它们之间的关系。通过...

    dom4j 解析(读取) xml 节点数据

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的方式来解析、创建、修改和操作XML数据。在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你...

    Dom4J生成XML的完整方法希望大家能用到

    本文将深入探讨如何使用Dom4J库来创建XML文档,包括初始化文档、添加元素、设置属性、插入文本以及最终保存文档至文件系统。 #### 一、Dom4J简介 Dom4J(Document Object Model for Java)是一款开源的、轻量级的...

    DOM4J 读取xml字符串

    在这个教程中,我们将深入探讨如何使用 DOM4J 来读取 XML 字符串。 ### 1. DOM4J 简介 DOM4J 是一个基于 Java 的开源项目,它的全名是 Document Object Model for Java。与传统的 DOM API 相比,DOM4J 提供了更...

    dom4j解析xml

    以下是一个简单的DOM4J代码示例,展示如何使用DOM4J删除XML文档中的一个节点: ```java import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j....

Global site tag (gtag.js) - Google Analytics