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();
}
}
数据的处理再根据自己的需求修改。