关于JDOM(1)

一、建立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));
    }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值