xml解析中如何使用dom4j的api对xml文件进行CRUD
作者
这篇文章将为大家详细讲解有关xml解析中如何使用dom4j的api对xml文件进行CRUD,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
packagegz.itcast.a_dom4j_write;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.util.Iterator;
importorg.dom4j.Document;
importorg.dom4j.DocumentHelper;
importorg.dom4j.Element;
importorg.dom4j.io.OutputFormat;
importorg.dom4j.io.SAXReader;
importorg.dom4j.io.XMLWriter;
importorg.junit.Test;
/**
*课堂练习:
*1.使用dom4j的api来生成以下的xml文件
<Students>
<Studentid="1">
<name>张三</name>
<gender>男</gender>
<grade>计算机1班</grade>
<address>广州天河</address>
</Student>
<Studentid="2">
<name>李四</name>
<gender>女</gender>
<grade>计算机2班</grade>
<address>广州越秀</address>
</Student>
</Students>
2.修改id为2的学生的姓名,改为“王丽”
3.删除id为2的学生
*@authorAPPle
*
*/
publicclassDemo4{
/**
*1.生成指定xml文档
*@throwsException
*/
@Test
publicvoidtest1()throwsException{
//1.内存创建xml文档
Documentdoc=DocumentHelper.createDocument();
//2.写入内容,第一个写入的就是根标签
ElementrootElem=doc.addElement("Students");
//2.1增加标签
ElementstudentElem1=rootElem.addElement("Student");
//2.2增加属性
studentElem1.addAttribute("id","1");
//2.3增加标签,【同时】设置文本
studentElem1.addElement("name").setText("张三");
studentElem1.addElement("gender").setText("男");
studentElem1.addElement("grade").setText("计算机1班");
studentElem1.addElement("address").setText("广州天河");
//2.1增加标签
ElementstudentElem2=rootElem.addElement("Student");
//2.2增加属性
studentElem2.addAttribute("id","2");
//2.3增加标签,同时设置文本
studentElem2.addElement("name").setText("李四");
studentElem2.addElement("gender").setText("女");
studentElem2.addElement("grade").setText("计算机2班");
studentElem2.addElement("address").setText("广州越秀");
//3.只要对doc做了修改,都要做一次写出。内容写出到xml文件
//3.1输出位置
FileOutputStreamout=newFileOutputStream("d:/student.xml");
//3.2指定格式
OutputFormatformat=OutputFormat.createPrettyPrint();
//设置编码
format.setEncoding("utf-8");
XMLWriterwriter=newXMLWriter(out,format);
//3.3写出内容
writer.write(doc);
//3.4关闭资源
writer.close();
}
/**
*2.修改id为2的学生姓名
*@throwsException
*/
@Test
publicvoidtest2()throwsException{
//1.查询到id为2的学生
Documentdoc=newSAXReader().read(newFile("d:/student.xml"));
//1.1找到所有的Student标签
Iterator<Element>it=doc.getRootElement().elementIterator("Student");
while(it.hasNext()){
ElementstuElem=it.next();//Student标签
//1.2查询id为id的学生标签
if(stuElem.attributeValue("id").equals("2")){
stuElem.element("name").setText("王丽");//覆盖式
break;
}
}
//3.1输出位置
FileOutputStreamout=newFileOutputStream("d:/student.xml");
//3.2指定格式
OutputFormatformat=OutputFormat.createPrettyPrint();
//设置编码
format.setEncoding("utf-8");
XMLWriterwriter=newXMLWriter(out,format);
//3.3写出内容
writer.write(doc);
//3.4关闭资源
writer.close();
}
/**
*3.删除id为2的学生
*@throwsException
*/
@Test
publicvoidtest3()throwsException{
//1.查询到id为2的学生
Documentdoc=newSAXReader().read(newFile("e:/student.xml"));
//1.1找到所有的Student标签
Iterator<Element>it=doc.getRootElement().elementIterator("Student");
while(it.hasNext()){
ElementstuElem=it.next();
//1.2查询id为id的学生标签
if(stuElem.attributeValue("id").equals("2")){
//1.3删除该学生标签
stuElem.detach();//自杀式
break;
}
}
//3.1输出位置
FileOutputStreamout=newFileOutputStream("e:/student.xml");
//3.2指定格式
OutputFormatformat=OutputFormat.createPrettyPrint();
//设置编码
format.setEncoding("utf-8");
XMLWriterwriter=newXMLWriter(out,format);
//3.3写出内容
writer.write(doc);
//3.4关闭资源
writer.close();
}
}关于“xml解析中如何使用dom4j的api对xml文件进行CRUD”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
目录
