首页 > 其他分享 >利用dom4j修改XML数据_进行增删改查【最新】

利用dom4j修改XML数据_进行增删改查【最新】

时间:2023-03-27 17:03:07浏览次数:42  
标签:XML dom4j doc 改查 System ele Student import Element


下面只发studentDao与util的源码:

代码已经测试过了,没有问题,如果有需要的调整,会修改,如有错误请帮忙改正,下午整理了一下修改,其实跟查询差不多,只是设置一下元素体即可,代码已经更新,时间2016年9月10日14:22:07

StudentDao:
package com.text.dao;


 import java.io.FileNotFoundException;
 import java.io.UnsupportedEncodingException;
 import java.util.List;


 import org.dom4j.Document;
 import org.dom4j.Element;


 import com.text.daomain.Student;
 import com.text.util.XmlUtil;


 /**
  * 第三步:对对象进行数据访问,数据访问,进行增删改查
  * 
  * @author 90942
  * 
  */
 public class StudentDao {
/**
* 添加对象
* 
* @param s
* @throws FileNotFoundException
* @throws UnsupportedEncodingException
*/
public void addStudent(Student s) throws Exception {
// 获取解析后的XML文件
Document doc = XmlUtil.XMLDocument();
// 获取元素的根节点
Element root = doc.getRootElement();
Element student = root.addElement("student");
// 创建属性,创建元素体,创建元素,返回的都是元素对象,直接在下面添加对象即可添加到XML中
student.addAttribute("id", s.getId());


student.addElement("name").setText(s.getName());
student.addElement("age").setText(s.getAge());
System.out.println("添加成功!");
// 顺序写入文档
XmlUtil.XMLPaiXu(doc);
}


/**
* 根据对象id删除对象
* 
* @param name
*/
public void deletaStudent(String name) {


Document doc = XmlUtil.XMLDocument();


Element root = doc.getRootElement();
List<Element> lists = root.elements();
for (int i = 0; i < lists.size(); i++) {
Element ele = lists.get(i);
// 这里的ele是name的父亲也就是student
if (name.equals(ele.element("name").getText())) {
// 删除的是ele的父亲,无需再次获得父亲得元素
root.remove(ele);
System.out.println("删除成功!!");
} else {
System.out.println("学生不存在,删除失败");
}
}
XmlUtil.XMLPaiXu(doc);
}


/**
* 修改对象昂的年龄
* 
* @param age
*/
public void updateStudent(String age, String name, String id) {
Student s = null;
Document doc = XmlUtil.XMLDocument();
Element root = doc.getRootElement();
List<Element> lists = root.elements();
for (int i = 0; i < lists.size(); i++) {
Element ele = lists.get(i);
System.out.println("这是在进行查找操作");
if (id.equals(ele.attributeValue("id"))) {
// 在nodeToBean中获取element的值设置到student中
s = XmlUtil.nodeToBean(ele, Student.class);
System.out.println("开始修改:");
ele.element("name").setText(name);
ele.element("age").setText(age);
}
}
System.out.println("修改成功!可以进行查询查看~!");
XmlUtil.XMLPaiXu(doc);


}


/**
* 根据对象id查询对象
* 
* @param id
* @return
*/
public Student selectStudent(String id) {


Student s = null;
Document doc = XmlUtil.XMLDocument();
Element root = doc.getRootElement();
List<Element> lists = root.elements();
for (int i = 0; i < lists.size(); i++) {
Element ele = lists.get(i);
System.out.println("这是在进行查找操作");
if (id.equals(ele.attributeValue("id"))) {
// 在nodeToBean中获取element的值设置到student中
System.out.println("查询成功!");
s = XmlUtil.nodeToBean(ele, Student.class);
} else {
System.out.println("学生不存在,查询失败");
}
}


return s;
}


 }XMLUtil:
package com.text.util;


 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.OutputStreamWriter;
 import java.io.UnsupportedEncodingException;


 import org.dom4j.Document;
 import org.dom4j.DocumentException;
 import org.dom4j.Element;
 import org.dom4j.io.OutputFormat;
 import org.dom4j.io.SAXReader;
 import org.dom4j.io.XMLWriter;


 import com.text.daomain.Student;


 /**
  * 第二步:创建工具类,获取XML文件
  * 
  * @author 90942
  * 
  */
 public class XmlUtil {
private static final String file = "src/NewFile.xml";


// 对XML进行dom4j的解析
public static Document XMLDocument() {


try {
// 读取磁盘文件的作用
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("src/NewFile.xml"));
return doc;
} catch (DocumentException e) {
System.out.println("获取XML文件失败!!");
// 处理异常,这样操作不会给上一层造成负担一旦没人处理就会抛给用户,这是绝对不允许的
throw new RuntimeException(e); // 转换成运行时异常
}


}


// 写入文档,并且对文档进行有序排列
public static void XMLPaiXu(Document doc) {


/**
* 写入之后使元素有秩序的排列 createPrettyPrint 良好的格式 OutputFormat 格式化的输出器
*/
OutputFormat format = OutputFormat.createPrettyPrint();
// 第一种将文档格式设置成需要的编码,设置的文档
format.setEncoding("UTF8");
// 将内存中的数据写入XML文档中
// FileWriter fileWroter = new FileWriter("src/users.xml");
// 防止乱码。指定编码类型
// 利用XMLWriter对象使文件成功写入XML文件,调用方法
// 参数:关联文件,写入的目标文件 第二个参数:指明输出格式
// 第二种将代码设置成需要的编码方式,设置自身。利用FileOutputStream指定了文档的编码类型
try {
XMLWriter writer = new XMLWriter(new OutputStreamWriter(
new FileOutputStream("src/NewFile.xml"), "UTF8"), format);
writer.write(doc);
writer.close();
} catch (Exception e) {
System.out.println("关闭刷新XML文件失败!!");
// 处理异常,这样操作不会给上一层造成负担一旦没人处理就会抛给用户,这是绝对不允许的
throw new RuntimeException(e); // 转换成运行时异常
}


}


// //创建对象
// public static Student ChuangStudent(Element e,Class<Student> student){
//
// try {
// Student s = student.newInstance();
// s.setId(e.get);
// } catch (Exception e1) {
// e1.printStackTrace();
// }
//
// return null;
// }


public static Student nodeToBean(Element e, Class<Student> class1) {
try {
Student s = class1.newInstance();
s.setId(e.attributeValue("id"));
s.setName(e.element("name").getText());
s.setAge(e.element("age").getText());


return s;
} catch (Exception e1) {
throw new RuntimeException(e1);
}


}
 }


标签:XML,dom4j,doc,改查,System,ele,Student,import,Element
From: https://blog.51cto.com/u_15996166/6152509

相关文章

  • android stdio中java代码对于xml的操作
    首先,我们需要在java代码中声明要修改的页面,例如LinearLayoutlistView=findViewById(R.id.line_station_liebiao);其次声名我们加入希望添加的组件,例如LinearLayout......
  • 【Mybatis】接口类注释增删改查
    员工实体类:  创建接口类,WorkerMapper.java1packagecom.xiaobiti.dao;23importcom.xiaobiti.pojo.Worker;4importorg.apache.ibatis.annotations.*;......
  • HTML/XML转义字符对照表(建议收藏)
               为什么要用转义字符串?HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用。这些符号是不显示在我们最终看到的网页里的,那如果我......
  • 用java实现书城项目(简单增删改查2)
    书城项目登录dao接口:UserDaoUserslogin(Stringusername,Stringpassword);实现:UserDaoImplQueryRunnerqueryrunner=newQueryRunner();Connectionconnection......
  • go语言学习-json和xml
    JSONjson是完全独立于语言的文本格式,是k-v的形式name:zs应用场景:前后端交互,系统间数据交互json使用go语言内置的encoding/json标准库编码json使用json.Marshal()函数可以......
  • Python实例讲解 -- 解析xml
    doc.xml <?xmlversion="1.0"encoding="utf-8"?><info><intro>信息</intro><listid='001'><head>auto_userone</head><name>Jordy</name>......
  • Http Xml Servlet
    Servlet概述访问网站时,我们都是基于WebBrowser/Server这种模式,简称BS框架。Servlet是JavaServlet的简称,称为小服务程序或服务连接器,用java编写的服务器端程序,具......
  • 》》》IDEA Mybatis中xml文件粘贴SQL导致左对齐,样式发生变化
    转载:IDEAMybatis中xml文件粘贴SQL导致左对齐,样式发生变化_ideamybatissql格式_诛心小恶魔的博客-CSDN博客IDEA在编辑mybatis中xml文件的时候,默认是不保留粘贴文本的缩......
  • mybatis xml文件热加载实现
    本文博主给大家带来一篇mybatisxml文件热加载的实现教程,自博主从事开发工作使用Mybatis以来,如果需要修改xml文件的内容,通常都需要重启项目,因为不重启的话,修改是不生......
  • Microsoft XML Parser (MSXML) and XML Core Services Unsupported Vulnerability_day
    今天要跟大家分享的是关于微软XML的系统缺陷。下面是关于这个问题的具体的描述:TheremotehostcontainsoneormoreunsupportedversionsoftheMicrosoftXMLParser(......