XML文件的读写
XML文件的读写我们需要用到一个第三方写的jar包——“dom4j-2.1.1.jar”,一会儿用到的包都需要从这个jar包里面导,下面是这个jar包的百度网盘链接
链接: https://pan.baidu.com/s/1YHKAe1MpC44CCzJ2LH9R-w
提取码: n7su
XML文件的读取(需要自己创建XML文件)
1、导入dom4j-2.1.1.jar
1、如上图,在工程文件夹下面创建一个名为lib的文件夹,然后把dom4j-2.1.1.jar包放到里面
2、现在的jar包还只是一个文本,不能用,需要给他转换一下,鼠标右键点击jar包,依次选择Buile Path->Add to Build Path,如下图所示
3、操作完成之后会自动生成一个文件夹,如下图所示就可以使用dom4j-2.1.1.jar包了
2、创建一个需要读取的XML文件person.xml
1、在工程名上面单击鼠标右键,选择new->other之后会出现如下界面,输入XML进行查找,然后命名即可,我这里命名为person.xml
2、在打开person.xml文件,添加内容,xml文件中左下角有两个选项,Design为层次结构图,Source才是进行内容添加的地方,XML文件和HTML有点相似,但是XML文件中的标签是可以随便命名的,在标签的后面可以添加标签的属性,比如我给person标签添加了id=1的属性。
3、开始读取person.xml文件
读取xml文件需要先创建一个SAXReader流对象
//创建读取XML文件的对象
SAXReader reader = new SAXReader();
然后给一个我们需要读取的xml文件
File file = new File("person.xml");
接下来进行问价操作必要的判断,判断该文件是否存在,如果不存在,则直接返回
if(!file.exists()) {
return;
}
调用read()方法把person.xml读取出来存为一个文档类型的文件,这里需要注意read()方法会抛出一个异常,我们需要自己处理一下
//读取文件返回文档类
Document read = reader.read(file);
使用getRootElement()方法获得跟标签,也就是person.xml文件中的list标签
Element root = read.getRootElement();
获得根标签之后就可以使用elements()方法获得根标签下面的所有的标签了,因为是多个标签,所以返回值是一个集合
List<Element> list = root.elements();
接下来遍历集合,使用elemt(name)方法,根据标签名获得标签
Element nameEle = e.element("name");
获得标签之后就可以使用getText()方法获得标签中的内容,getText()方法中重载了一个getTextTrim()方法,如果我们获得的标签中的内容包含我们不需要的空白部分就可以使用后面的方法获得内容
String nameValue = nameEle.getTextTrim();
读取xml文件中还有一个方法
getName();
可以获得标签的名字
下面是读取xml文件的完整代码以及输出结果
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XMLDemo01 {
public static void main(String[] args) {
//创建读取XML文件的对象
SAXReader reader = new SAXReader();
//给一个需要读取的XML文件
File file = new File("person.xml");
if(!file.exists()) {
return;
}
try {
//读取文件返回文档类
Document read = reader.read(file);
/*
* getRootElement();获得根标签
*/
Element root = read.getRootElement();
System.out.println(root);
/*
* 将标签中的内容作为字符串返回
*/
String String = root.asXML();
System.out.println(String);
/*
* getName();获得标签名
*/
//String name = root.getName();
/*
* getText()
* getTextTrim()
* 获得标签中的内容
*/
//String text = root.getTextTrim();
//System.out.println(name+":"+text);
//获得根标签下的所有标签
List<Element> list = root.elements();
System.out.println(list);
for(Element e:list) {
//获得跟标签下的name标签
Element nameEle = e.element("name");
//获得标签名字,基本没啥卵用
String name = nameEle.getName();
System.out.println("name标签的名字:"+name);
//获得name标签下的值
String nameValue = nameEle.getTextTrim();
System.out.println("name标签的值:"+nameValue);
Element ageEle = e.element("age");
java.lang.String ageValue = ageEle.getTextTrim();
System.out.println("age标签的值:"+ageValue);
Element sexEle = e.element("sex");
java.lang.String sexValue = sexEle.getTextTrim();
System.out.println("age标签的值:"+ageValue);
System.out.println(nameValue+","+ageValue+","+sexValue);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
写XML文件
1、给定需要进行写操作的xml文件,如果不存在,则创建
File file = new File("writer.xml");
if(!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
2、创建写xml文件的流
FileOutputStream fos = new FileOutputStream(file);
OutputFormat format = OutputFormat.createPrettyPrint();
//给定编码集
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(fos,format);
3、创建需要写的文档
org.dom4j.Document doc = DocumentHelper.createDocument();
4、给文档添加标签以及标签内容
//增加标签root
Element root = doc.addElement("root");
//在标签root下添加标签person
Element p1 = root.addElement("person");
//给标签添加属性
p1.addAttribute("id", "1");
//在标签person下添加标签name
Element name = p1.addElement("name");
//给name标签添加文本为"张三"
name.setText("张三");
//在标签person下再添加一个标签sex
Element sex = p1.addElement("sex");
//给sex标签添加文本为"男"
sex.setText("男");
5、把文档写进xml文件中,并进行刷新,然后关闭流
//把doc文档写进xml文件中
writer.write(doc);
writer.flush();
writer.close();
下面是写xml文件的完整代码以及运行结果展示
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/**
* XML文件的写操作
* @author 44639
*
*/
public class XMLDemo02 {
public static void main(String[] args) {
File file = new File("writer.xml");
if(!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileOutputStream fos = new FileOutputStream(file);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(fos,format);
//创建文档doc
org.dom4j.Document doc = DocumentHelper.createDocument();
//增加标签root
Element root = doc.addElement("root");
//在标签root下添加标签person
Element p1 = root.addElement("person");
//给标签添加属性
p1.addAttribute("id", "1");
//在标签person下添加标签name
Element name = p1.addElement("name");
//给name标签添加文本为"张三"
name.setText("张三");
//在标签person下再添加一个标签sex
Element sex = p1.addElement("sex");
//给sex标签添加文本为"男"
sex.setText("男");
//把doc文档写进xml文件中
writer.write(doc);
writer.flush();
writer.close();
System.out.println("写出完毕");
} catch (Exception e) {
e.printStackTrace();
}
}
}