Java中Xml4j的使用
目录
- 一、导入Xml4j.rar到Idea中
- 二、Xml4j在Java中的操纵
- 1.在Java中读取文件的操作
- (一).初始化
- (二).遍历节点
- (三).遍历得到节点中的内容
- (四).总结
- 2.存储已经创建好的Document树(文件保存)
- 3.创建一个DOM4j实例
- 4.增改操作已经在内,删除操作使用remove();方法
一、导入Xml4j.rar到Idea中
测试环境:Windows10专业版
应用软件:IntelliJ IDEA 2021.1 x64
测试时间:2022年8月21日 20点22分
File–>Project Structure…
Project Settings–>Libraries–>+
±->Java
目录–>OK
二、Xml4j在Java中的操纵
1.在Java中读取文件的操作
(一).初始化
/*** @description 将XML转为Document对象* @author Jule_zhou* @date 2022-08-20 16:38:27* @param file 文件地址* @return*/
public static Document document(File file) {SAXReader saxReader = new SAXReader();Document document = null;try {document = saxReader.read(file);} catch (DocumentException e) {e.printStackTrace();}return document;
}
附加代码
// 获取根节点
Element rootElement = document.getRootElement();
(二).遍历节点
/*** @description 遍历一个节点中的次一级所有节点* @author Jule_zhou* @date 2022-08-21 11:45:05* @param element 子一级节点List集合* @return {@link ArrayList < Element >} 父级节点*/
static ArrayList<Element> getLastElement(Element element){// 存放节点信息ArrayList<Element> elements = new ArrayList<>();Iterator<Element> iterator = element.elementIterator();// 遍历所有次一级节点while (iterator.hasNext()){// 遍历拿取节点Element lastElement = iterator.next();// 添加节点信息,存储到List中elements.add(lastElement);}return elements;
}
主要代码说明
// 获取当前标签节点下的所有子节点标签
// 当前节点为Element element;
Iterator<Element> iterator = element.elementIterator();
(三).遍历得到节点中的内容
/*** @description 遍历标签中文本内容* @author Jule_zhou* @date 2022-08-21 12:13:58* @param element* @return {@link String} 文本*/
static String getText(Element element)throws NullPointerException{String str = "";str = element.getTextTrim();if ("".equals(str)){throw new NullPointerException("未找到文本内容!");}return str;
}
特别代码说明
// getTextTrim()方法可以去除换行,如果存在多行数据,在str会出现间隔,但仍然是一个字符串(且该字符串内不存在换行)
// getTextTrim()方法不可以去除换行,会有大量空格产生
String str = element.getTextTrim();
附加代码
// attributeValue(String)方法可获得该节点属性值,其中需要传递一个String类型的属性名称
// 在Xml文件中<body number = "000"></body>,number就是属性名称,000就是属性值
String number = element.attributeValue("number");
(四).总结
方法名 | 作用 |
---|---|
SAXReader() | 解析Xml文件 |
saxReader.read() | 读取文档并返回一个文档实体类型 |
document.getRootElement() | 获取Xml根节点 |
element.elementIterator(); | 获取字节点 |
getTextTrim() | 获得文本 |
element.attributeValue() | 获得属性值 |
2.存储已经创建好的Document树(文件保存)
/*** @description 存储数据* @author Jule_zhou* @date 2022-08-21 22:56:59* @param document 要写入的数据Document类型* @return*/
public void write(Document document,File file){// 创建格式化OutputFormat outputFormat = OutputFormat.createPrettyPrint();// 设置编码格式outputFormat.setEncoding("UTF-8");try {// 创建写入,(创建写入方式,设定编码格式)XMLWriter xmlWrite = new XMLWriter(new FileWriter(file),outputFormat);// 写入Document文件xmlWrite.write(document);xmlWrite.flush();xmlWrite.close();} catch (IOException e) {e.printStackTrace();}
知识点附加
OutputStream带有Stream字节流
Writer,字符流,更适合于中文读写
主要代码说明
// 创建格式化
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
// 设置编码格式
outputFormat.setEncoding("UTF-8");
// 创建FileWrite的字符流写入
FileWrite fileWrite = new FileWriter(file);
// 创建写入,(创建写入方式,设定编码格式)
XMLWriter xmlWrite = new XMLWriter(fileWrite ,outputFormat);
// 使用write方法写入Document文件xmlWrite.write(document);
3.创建一个DOM4j实例
/*** @description 创建一个DOM4j实例* @author Jule_zhou* @date 2022-08-24 16:12:20* @param* @return {@link Document}*/
public Document createDocument(){// 创建一个Document对象Document document = DocumentHelper.createDocument();// 添加根节点Element rootEle = document.addElement("mobiles");// 添加子节点Element cardNumberEle = rootEle.addElement("cardNumber");// 添加cardNumberEle节点的属性cardNumberEle.addAttribute("number","0000000");// 添加cardNumber的子节点Element mobilCardEle = cardNumberEle.addElement("mobilCard");Element consumInfosEle = cardNumberEle.addElement("consumInfos");// 添加mobilCardEle的子节点Element userNameEle = mobilCardEle.addElement("userName");Element passWordEle = mobilCardEle.addElement("passWord");Element serPackageEle = mobilCardEle.addElement("serPackage");Element consumAmoutEle = mobilCardEle.addElement("consumAmout");Element moneyEle = mobilCardEle.addElement("money");Element realTalkTimeEle = mobilCardEle.addElement("realTalkTime");Element realSMSCountEle = mobilCardEle.addElement("realSMSCount");Element realFlowEle = mobilCardEle.addElement("realFlow");// 添加consumInfosEle的子节点Element consumInfoEle = consumInfosEle.addElement("consumInfo");// 添加consumInfoEle的子节点的属性consumInfoEle.addAttribute("id","0");// 添加serPackageEle的子节点Element priceEle = serPackageEle.addElement("price");Element talkTimeEle = serPackageEle.addElement("talkTime");Element smsCountEle = serPackageEle.addElement("smsCount");Element flowEle = serPackageEle.addElement("flow");// 添加consumInfosEleEle的子节点Element typeEle = consumInfoEle.addElement("type");Element consumDataEle = consumInfoEle.addElement("consumData");return document;
}
主要代码说明
// 创建一个Document对象(创建对象)
Document document = DocumentHelper.createDocument();
// 添加根节点(创建节点)
Element rootEle = document.addElement("mobiles");
// 添加子节点(创建节点)
Element cardNumberEle = rootEle.addElement("cardNumber");
// 添加cardNumberEle节点的属性(添加属性)
cardNumberEle.addAttribute("number","0000000");
4.增改操作已经在内,删除操作使用remove();方法
Java中Xml4j的使用相关推荐
- java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...
一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...
- java中调用python
在Java中调用Python </h1><div class="clear"></div><div class="postBod ...
- java中hashcode_浅谈Java中的Hash值
1.Hash值有什么用? HashMap.HashTable.HashSet,所以涉及到使用Hash值进行优化存储的地方,都会用到HashCode.HashCode是Key,这种计算为提高计算的性能. ...
- JAVA中获取当前系统时间
JAVA中获取当前系统时间 转自:http://www.cnblogs.com/Matrix54/archive/2012/05/01/2478158.html 一. 获取当前系统时间和日期并格式化输 ...
- Java中的对象和包
什么是对象 对象就是实际生活中的事物,可以说一切事物都是对象. 对象的三个特点 1 对象的行为:这个对象能做什么, 例如包子是用来吃的 2 对象的状态:对象保持的一种状态,例如这个包子是热的还是凉 ...
- java中标识符,关键字,数据类型
什么是标识符? 在java语言中用来给一个类,变量或方法命名的符号 标识符的命名规则 标识符可以由字母.数字.下划线(_).美元符($)组成,但不能包含 @.%.空格等其它特殊字符,不能以数字开头. ...
- Java中byte与16进制字符串的互相转换
https://www.cnblogs.com/qinwangchen/p/5418028.html * Convert byte[] to hex string.这里我们可以将byte转换成int, ...
- JAVA中priorityqueue详解
Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示.本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度, ...
- 使用java中replaceAll方法替换字符串中的反斜杠
今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: 1 java.util.regex. ...
最新文章
- 详解通用物体检测算法:基于锚框与无需锚框
- apue学习笔记(第三章 文件I/O)
- ux设计师怎样找同类产品_UX设计师UI设计师产品设计师和UX研究人员有何不同
- LiveVideoStackCon 一次全新的尝试,错过了就是一辈子
- SAP APF tile点击之后,都发生了哪些事情
- iOS 开发-文件下载原理
- 电路设计之干扰问题总结与分析
- Qt工作笔记-使用QFileSystemWatcher监控文件是否改变
- Jmeter 使用badyboy 录制脚本
- String和StringBuffer的区别
- R语言实现混频数据分析实例----midas回归预测
- [Codeforces 487E]Tourists
- 用MFC消息映射机制自定义消息
- Response.Clear() Response.ClearContent()和Response.ClearHeaders()之间的区别
- 润土之四——构造润土的来由
- JavaSE集合框架-01-集合框架体系及表数据结构
- fastble找不到手机_Android蓝牙库FastBle的基础入门使用
- Android Toast提示的使用
- java 电子签章 开源_java操作pdf制作电子签章 - CSDN博客
- java之随机生成名字