一、建立xml文件:
package test;
import java.io.FileOutputStream;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
public class BuildXml {
public void Build() throws Exception
{
Element root,student,number,name,age;
root=new Element("student-info");//生成根元素:student-info
student=new Element("student"); //生成元素:student,该元素中将包含元素number,name,age
number=new Element("number");
name=new Element("name");
age=new Element("age");
Document doc=new Document(root); //将根元素植入文档doc中
number.setText("001");
name.setText("lnman");
age.setText("24");
student.addContent(number);
student.addContent(name);
student.addContent(age);
root.addContent(student);
Format format=Format.getCompactFormat();
format.setEncoding("gb2312"); //设置xml文件的字符为gb2312
format.setIndent(" "); //设置xml文件的缩进为4个空格
XMLOutputter XMLOut=new XMLOutputter(format);//在元素后换行,每一层元素缩排四格
XMLOut.output(doc,new FileOutputStream("E:\\WORK\\jsp_31home\\WebRoot\\my\\1002\\studentinfo.xml"));
System.out.println("***************");
}
}
生成后的studentinfo.xml文件代码如下:
<?xml version="1.0" encoding="gb2312"?>
<student-info>
<student>
<number>001</number>
<name>lnman</name>
<age>24</age>
</student>
</student-info>
二:向xml文件添加信息:
xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<zsmy>
<type0>
<titles>
<title>info11111111111</title>
<link>info12</link>
<pictrue>info11</pictrue>
<content>info14</content>
<more>more1</more>
<moretext>moret1</moretext>
</titles>
<titles>
<title>info11111111111</title>
<link>info12</link>
<pictrue>info11</pictrue>
<content>info14</content>
<more>more1</more>
<moretext>moret1</moretext>
</titles>
</type1>
<type2>
<titles>
<title>info11111111111</title>
<link>info12</link>
<pictrue>info11</pictrue>
<content>info14</content>
<more>more1</more>
<moretext>moret1</moretext>
</titles>
<titles>
<title>info11111111111</title>
<link>info12</link>
<pictrue>info11</pictrue>
<content>info14</content>
<more>more1</more>
<moretext>moret1</moretext>
</titles>
</type2>
<type3>
<titles>
<title>info11111111111</title>
<link>info12</link>
<pictrue>info11</pictrue>
<content>info14</content>
<more>more1</more>
<moretext>moret1</moretext>
</titles>
<titles>
<title>info11111111111</title>
<link>info12</link>
<pictrue>info11</pictrue>
<content>info14</content>
<more>more1</more>
<moretext>moret1</moretext>
</titles>
</type3>
</zsmy>
<zsmy></zsmy>
</root>
这里我用的是Servlet,我只写出了其中的doPost()。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
String path = request.getParameter("path");//参数是传递过来的
System.out.println(path);
String urlto = request.getParameter("urlto");
String type = request.getParameter("type");
String title=request.getParameter("title");
String link=request.getParameter("link");
String content=request.getParameter("content");
String pic=request.getParameter("pic");
String more=request.getParameter("more");
String moretext=request.getParameter("moretext");
response.setContentType("text/html;charset=gb2312");
PrintWriter out = null;
FileInputStream fi = null;
FileOutputStream fo = null;
out = response.getWriter();
String str = "操作失败!";
try {
fi = new FileInputStream(path);
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fi);
Element root = doc.getRootElement(); // 得到根元素
List books = root.getChildren(); // 得到根元素所有子元素的集合
Element book = (Element) books.get(0);
Element typexml = (Element) book.getChild(type);
List titles = typexml.getChildren("titles");
// <%=application.getRealPath("/my/MyTJ.xml")%>
response.setContentType("text/html;charset=gb2312");
// Text newtext;
Element newtitles = new Element("titles");
Element newname = new Element("title");
newname.setText(title);
newtitles.addContent(newname);
Element newlink = new Element("link");
newlink.setText(link);
newtitles.addContent(newlink);
Element newcontent = new Element("content");
newcontent.setText(content);
newtitles.addContent(newcontent);
Element newpic = new Element("pictrue");
newpic.setText(pic);
newtitles.addContent(newpic);
Element newmore = new Element("more");
newmore.setText(more);
newtitles.addContent(newmore);
Element newmoretext = new Element("moretext");
newmoretext.setText(moretext);
newtitles.addContent(newmoretext);
titles.add(newtitles);// 增加子元素
// String indent = " ";
// boolean newLines = true;
// XMLOutputter outp = new XMLOutputter(indent, newLines, "GBK");
Format format = Format.getPrettyFormat();
format.setIndent(" ");
format.setEncoding("utf-8");
XMLOutputter outp = new XMLOutputter(format);
fo = new FileOutputStream(path);
outp.output(doc, fo);
str = "操作成功!";
} catch (Exception e) {
str="error";
e.printStackTrace();
} finally {
try {
fi.close();
fo.close();
} catch (Exception e) {
e.printStackTrace();
}
out.println(Mes.mess(urlto, str));//操作之后转向地址
}
三、修改xml文件
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("gb2312");
String path = request.getParameter("path");
String urlto = request.getParameter("urlto");
String type=request.getParameter("type");
String title=request.getParameter("title");
String link=request.getParameter("link");
String content=request.getParameter("content");
String pic=request.getParameter("pic");
String more=request.getParameter("more");
String moretext=request.getParameter("moretext");
int xmlid = Integer.parseInt(request.getParameter("id"));
response.setContentType("text/html;charset=GBK");
PrintWriter out = null;
FileInputStream fi = null;
FileOutputStream fo = null;
out = response.getWriter();
String str = "操作失败!";
try {
out = response.getWriter();
fi = new FileInputStream(path);
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fi);
Element root = doc.getRootElement(); // 得到根元素
List books = root.getChildren(); // 得到根元素所有子元素的集合
Element book = (Element) books.get(0);
Element typexml = (Element) book.getChild(type);
Element titled = null;
List titles=typexml.getChildren("titles");
response.setContentType("text/html;charset=gb2312");
// Text newtext;
for(int o=0;o<titles.size();o++){
//System.out.println(title[o]);
//System.out.println(link[o]);
titled=(Element) titles.get(o);
if(o==xmlid){
//System.out.println(price);
Element newtitle = titled.getChild("title");
newtitle.setText(title.toString());// 修改书名为新的书名
Element newlink = titled.getChild("link");
newlink.setText(link.toString());// 修改书名为新的书名
Element newcontent = titled.getChild("content");
newcontent.setText(content.toString());// 修改书名为新的书名
Element newpic = titled.getChild("picture");
newpic.setText(pic.toString());// 修改书名为新的书名
Element newmore = titled.getChild("more");
newmore.setText(more.toString());// 修改书名为新的书名
Element newmoretext = titled.getChild("moretext");
newmoretext.setText(moretext.toString());// 修改书名为新的书名
}
}
// String indent = " ";
// boolean newLines = true;
// XMLOutputter outp = new XMLOutputter(indent, newLines, "GBK");
Format format = Format.getPrettyFormat();
format.setIndent(" ");
format.setEncoding("utf-8");
XMLOutputter outp = new XMLOutputter(format);
fo = new FileOutputStream(path);
outp.output(doc, fo);
str = "操作成功!";
} catch (Exception e) {
str="error";
e.printStackTrace();
} finally {
try {
fi.close();
fo.close();
} catch (Exception e) {
e.printStackTrace();
}
out.println(Mes.mess(urlto, str));//操作之后转向地址
}
}
四、删除xml信息:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
FileInputStream fi = null;
FileOutputStream fo = null;
request.setCharacterEncoding("GBK");
String path = request.getParameter("path");
String type=request.getParameter("type");
String typeid=request.getParameter("typeid");
int xmlid = Integer.parseInt(request.getParameter("id"));
//String urlto=request.getParameter("urlto");
String urlto="/VIVI_HY_admin/jxmy/industry/admin_media.jsp?id="+typeid+"&type="+type;
String str="操作失败!";
PrintWriter out = null;
response.setContentType("text/html;charset=gb2312");
try {
out = response.getWriter();
fi = new FileInputStream(path);
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fi);
Element root = doc.getRootElement(); // 得到根元素
List books = root.getChildren(); // 得到根元素所有子元素的集合
Element book = (Element) books.get(0);
Element typexml = (Element) book.getChild(type);
List titles=typexml.getChildren("titles");
response.setContentType("text/html;charset=gb2312");
titles.remove(xmlid);
// String indent = " ";
// boolean newLines = true;
// XMLOutputter outp = new XMLOutputter(indent, newLines, "GBK");
Format format = Format.getPrettyFormat();
format.setIndent(" ");
format.setEncoding("utf-8");
XMLOutputter outp = new XMLOutputter(format);
fo = new FileOutputStream(path);
outp.output(doc, fo);
str="操作成功!";
} catch (Exception e) {
System.err.println(e + "error");
} finally {
try {
fi.close();
fo.close();
} catch (Exception e) {
e.printStackTrace();
}
out.println(Mes.mess(urlto, str));
}
}