后台java解析xml文件把数据显示在jsp页面,生成一表单,数据显示在input里面
现在要求可以对循环表单修改和增加,来实现对原xml文件的修改??

解决方案 »

  1.   

    那我把代码贴出来吧!
    <1>在e:\sysconfig.xml<?xml version="1.0" encoding="GBK"?>
    <sysconfig>
      <config key="starturl">1424524</config>
      <config key="dbconnectionfile">12120</config>
    </sysconfig><2>有JudgeXml.jsp
    <%@ page language="java"  pageEncoding="utf-8"%>
    <%@ page import="java.io.*" %>
    <%
      if(request.getMethod().toLowerCase().equals("post")){//提交状态下   
          String filename=request.getParameter("filename");
          if(filename!="" && filename!=null){
              File f=new File(filename);
               if(f.exists()){  
                  System.out.println("文件已存在");
                 // response.sendRedirect("/test.jsp"); 
                  request.getRequestDispatcher("/test2.jsp").forward(request,response);         
                    }       
               else{
                   //显示编写文件的块
                  System.out.println("文件不存在");
                  request.getRequestDispatcher("/CreatXml.jsp").forward(request,response);            
                  }
             }
      }
    %><html>
    <head>
    <title>系统部署配置文件参数</title>
    </head>
     <form   method="POST" action="JudgeXml.jsp">
    <table width="100%" border="0" cellspacing="0" cellpadding="2">
      <tr> 
        <td height="23" nowrap bgcolor="D6E5EF"><span class="T2">系统部署管理&gt;&gt;系统配置文件判断</span></td>
      </tr>
    </table>
    <br>
    <br>
    <table width="80%" border="0" align="center" cellpadding="2" cellspacing="1" class="tableStyle01">
      <tr> 
        <td align="right" class="TDstyle01">filename: </td>
        <td class="TDstyle01"><input name="filename" type="text" class="input"  ></td>
      </tr>
      <tr align="center"> 
        <td height="35" colspan="2" class="TDstyle03"> <input name="submit" type="submit" class="button" value=" 提交 " > 
        <input name="submit" type="button" class="button" value=" 返回 " onClick="window.history.back(-1)"> 
        </td>
      </tr>
    </table>
    </form>
    </body>
    </html><3>后台xmlbean.java
    package jdom.test;/**
     * XML的读写操作Bean
     */
    import java.io.*;
    import java.util.*;
    import org.jdom.*;
    import org.jdom.output.*;
    import org.jdom.input.*;
    import javax.servlet.*;
    import javax.servlet.http.*;public class XmlBean {
     private String key,record;
     private Integer id;
     
    public Integer getId() {
     return id;
     }
     public String getKey() {
      return key;
     } public String getRecord() {
      return record;
     } public void setId(int id){
     this.id=id;
     }
     
     public void setKey(String key) {
      this.key = key;
     } public void setRecord(String record) {
      this.record = record;
     } public XmlBean() {
     } /**
      * 读取XML文件所有信息
      */
     public Vector LoadXML(String path) throws Exception {
      Vector xmlVector = null;
      FileInputStream fi = null;
      try {
       fi = new FileInputStream(path);
       xmlVector = new Vector();
       SAXBuilder sb = new SAXBuilder();
       Document doc = sb.build(fi);
       Element root = doc.getRootElement(); // 得到根元素
       List configs = root.getChildren(); // 得到根元素所有子元素的集合
       XmlBean xml = null;
       for (int i = 0; i < configs.size(); i++) {
       System.out.println("---------------------------");
       xml=new XmlBean();
    //   Element item=(Element)configs.get(i);//取得节点实例
       Element config=(Element)configs.get(i);
                       int id=i;
                 xml.setId(id);
                 System.out.println("id:"+id);
     //  String key=item.getAttribute("key").getValue();
         String key=config.getAttribute("key").getValue();     

       xml.setKey(key);
        
      //    xml.setId(i);
       //   System.out.println("id:"+id);
       System.out.println("key:"+key);

    //   String record=item.getValue();
        String record=config.getValue();
       System.out.println("record:"+record);
       xml.setRecord(record);
       xmlVector.add(xml);
      }
      } catch (Exception e) {
       System.err.println(e + "error");
      } finally {
       try {
        fi.close();
       } catch (Exception e) {
        e.printStackTrace();
       }
      }
      return xmlVector;
     }
     <4>在JudgeXml.jsp页面中输入e:\sysconfig.xml跳转到test2.jsp
    <5>test2.jsp<%@ page contentType="text/html;charset=utf-8"%>
    <%@ page language="java" import="java.util.*,jdom.test.*"%>
    <html>
    <head>
    <title>配置文件参数读取</title>
    </head>
    <style type="text/css">
    .tableStyle01 {
    background-color: #ABDDEE;
    border: 1px solid #4692AE;
    }
    .TDstyle01 {
    font-size: 15px;
    color: #000000;
    background-color: #F6FCFD;
    line-height: 22px;
    }
    .TDstyle02 {
    font-size: 12px;
    line-height: 22px;
    color: #000000;
    background-color: #E2F4F9;
    height: 24px;
    }
    .TDstyle03 {
    font-size: 12px;
    color: #000000;
    background-color: #EDF7F9;
    line-height: 22px;
    }
    .T2 {
    font-size: 12px;
    font-weight: bold;
    color: #004C65;
    }
    </style> 
    <bodY>
    <br><br>
    <form  method="POST" action="xmlaction.jsp"><table width="100%" border="0" cellspacing="0" cellpadding="2">
      <tr> 
        <td height="23" nowrap bgcolor="D6E5EF"><span class="T2">系统部署管理&gt;&gt;系统配置文件参数修改</span></td>
      </tr>
    </table><br>
     <p align="center"> <input type="radio" value="add" checked name="act">添加资料
    <input type="radio" value="edit" name="act">编辑资料 </p>
    <table width="80%" border="0" align="center" cellpadding="2" cellspacing="1" class="tableStyle01">
     
     
    <!--   <p align="center"><input type="radio" value="add" checked name="act">添加资料
    <input type="radio" value="edit" name="act">编辑资料 
    -->
    <%
       String path=request.getParameter("filename");
        path=path.toString();
     // String path = application.getRealPath("f://MyXml.xml");
      XmlBean xml = new XmlBean();
      Vector xmlall = xml.LoadXML(path);
      for (int i = 0; i < xmlall.size(); i++) {
       xml = (XmlBean) xmlall.elementAt(i);
       /**out.println("key:"+xml.getKey()+"<br>");
         out.println("id:"+xml.getId()+"<br>");
        out.println("record:"+xml.getRecord()+"<br><br>");
        */
        
    %>
    <tr>
       <!--<td class="TDstyle01">第<%=xml.getId()+1%>条</td>-->
     <!-- <td id="KEY"+i class="TDstyle01"><%=xml.getKey() %></td>
      <td class="TDstyle01"><input id="v"+i type="text" class="input"   name="record" value="<%=xml.getRecord()%>"/></td>-->
      
      <td class="TDstyle01"><%=xml.getKey() %></td>
      <td class="TDstyle01"><input id="record"&i  type="text" class="input"   name="record"&i  value="<%=xml.getRecord()%>"/></td>
      <input type="hidden" class="input" name="id" value="4"/>
       
      
       
       
     <!--   <input type="hidden" name="ip" value="${xml.id}">-->
    <!--    <td class="TDstyle01"><%=xml.getRecord() %></td>-->
     <!--  <td class="TDstyle01"><input  type="text" class="input"  name="record"  value="<%=xml.getRecord()%>"/></td>
     
      <input type="hidden" class="input" name="ip" value="<%=i%> ">-->
    </tr><%}%><!--  
    <tr>
    <p align="center"><input type="radio" value="add" checked name="act">添加资料
    <input type="radio" value="edit" name="act">编辑资料 序 号:<select size="1"
     name="ip">
     <%for (int i = 0; i < xmlall.size(); i++) {%>
     <option value="<%=i%>">第<%=i + 1%>条</option>
     <%}%>
    </select><br> 
    -->
    <tr>
       <td class="TDstyle01"><input name="key" type="text" class="input" style="width:80%" ></td>
       <td class="TDstyle01"><input name="Record" type="text" class="input" style="width:80%" ></td>
    </tr>
    </p>  <input type="hidden" name="path" value="<%=path%>"> 
    <tr align="center"> 
      <td height="35" colspan="2" class="TDstyle03"> <input name="submit" type="submit" class="button" value=" 保存 " > 
      <input name="submit" type="button" class="button" value=" 返回 " onClick="window.history.back(-1)"> 
      </td>
    </tr>
    </table>
    </form></body> 
    </html>对循环表单的值就行修改或增加,来实现对xml文件的修改??<6>xmlaction.jsp
    ...  
      

  2.   

    可以用,也可以不用。 
    用JS不就是AJAX吗。 
    不用就直接表单提交就OK了撒。
      

  3.   

    对循环表单的数据进行批量修改.完成对原xml的更新