JAVA 通过dom4j 写入xml、读取xml

dom4j是非官方的xml的操作方式

写入:

当然是可以一直追加的那种哦

/*
		 * 向xml写入数据
		 */
		public static void setXml(Set<String> set) {
			try {
				/*
		         * 1. (创建)得到Document
		         * 2. (创建)得到root元素
		         * 3. 要把数据对象转换成Element元素
		         * 4. 把对象的属性插入到root元素中
		         * 5. 回写document
		         */
				//文件名
				String fileName="ss.xml";
				//文件夹路径
				String path = "F://eclipse//Five//WebContent//file//";
				//文件路径
				String filePath=path+fileName;
				//创建文件夹
				File Path=new File(path);
				if (!Path.exists()) {
					//把路径中不存在的文件夹也能创建出来
					Path.mkdirs();
				}
				//创建文件
				File file=new File(filePath);
				Element root=null;
				Document doc=null;
				//如果不存在则新建
				if (!file.exists()) {
					file.createNewFile();
					//创建一个xml文档
					doc=DocumentHelper.createDocument();
					//创建一个根节点
					root=doc.addElement("root");
					//添加注释
					root.addComment("这是注释");
					//创建root的子节点
					Element userInfo=root.addElement("userInfo");
					//自定义的属性数组
					String[] str= {"name","file","classes","sex","age"};
					int i=0;
					for(String s:set) {
						//创建userInfo的子节点
						userInfo.addElement(str[i++]).addText(s);
					}
					//获取文件输出流
					FileWriter fw=new FileWriter(file);
					//格式化,碰到\t换行
					OutputFormat format=new OutputFormat("\t",true);
					//这句话是给追加的准备的,碰到回车不换行,防止追加的没空行,之前的有空行
					format.setTrimText(true);
					//获取xml文件输出流
					XMLWriter writer=new XMLWriter(fw, format);
					//向writer写入doc
					writer.write(doc);
					//刷新
					fw.flush();
					//关闭流
					fw.close();
				}else {//实现追加数据
					//SAX解析
					SAXReader read=new SAXReader();
					//获取文件输入流
					FileReader fr=new FileReader(file);
					//获取文档结构
					doc=read.read(fr);
					root=doc.getRootElement();
					//创建root的子节点
					Element userInfo=root.addElement("userInfo");
					//自定义的属性数组
					String[] str= {"name","file","classes","sex","age"};
					int i=0;
					for(String s:set) {
						//创建userInfo的子节点
						userInfo.addElement(str[i++]).addText(s);
					}
					//获取文件输出流
					FileWriter fw=new FileWriter(file);
					//格式化,碰到\t换行
					OutputFormat format=new OutputFormat("\t",true);
					//这句话是给追加的准备的,碰到回车不换行,防止追加的没空行,之前的有空行
					format.setTrimText(true);
					//获取xml文件输出流
					XMLWriter writer=new XMLWriter(fw, format);
					//向writer写入doc
					writer.write(doc);
					//刷新
					fw.flush();
					//关闭流
					fw.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

这句话的区别

format.setTrimText(false);

在这里插入图片描述

format.setTrimText(true);

在这里插入图片描述

读取:

已经实现循环读取所有根节点下的所有子节点数据

/*
		 * 从xml读出数据
		 */
		public static void getXml() {
			try {
				//文件名
				String fileName="ss.xml";
				//文件夹路径
				String path = "F://eclipse//Five//WebContent//file//";
				//文件路径
				String filePath=path+fileName;
				//创建文件夹
				File Path=new File(path);
				if (!Path.exists()) {
					//把路径中不存在的文件夹也能创建出来
					Path.mkdirs();
				}
				//创建文件
				File file=new File(filePath);
				//如果不存在则新建
				if (!file.exists()) {
					file.createNewFile();
				}
				//SAX解析
				SAXReader read=new SAXReader();
				//获取文件输入流
				FileReader fr=new FileReader(file);
				//获取文档结构
				Document doc=read.read(fr);
				//获取根节点
				Element root=doc.getRootElement();
				//获得根节点所有的子节点
				List<Element> list=root.elements();
				//循环子节点
				for(Element e:list) {
					//获得该节点的所有子节点
					List<Element> list1=e.elements();
					//循环该节点的所有子节点
					for(Element e2:list1) {
						//输出节点名称和节点值
						System.out.println(e2.getName()+" : "+e2.getText());
					}
				}
				fr.close();
				
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

在这里插入图片描述
数据的处理再根据自己的需求修改。

dom4j-2.1.3.jar
链接:
https://ww.lanzous.com/icsp9ba

这是CSDN资源下载,有能力请支持,1c币
https://download.csdn.net/download/weixin_43897573/12438906

希望对你能有所帮助( ^ _ ^ )
有意见的请下方评论区见!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值