09---Ajax03(返回xml数据)

来源:互联网 发布:粉笔上的数据如何重置 编辑:程序博客网 时间:2024/05/16 08:06

为了更好的理解关于Ajax操作xml的部分,所以下面的程序将通过一个普通的静态的xml文件,来观察一些

ajax中的接受
 xml的返回效果;
范例:有如下的一段xml文件---allarea.xml;
 <?xml version="1.0" encoding="gbk"?>
 <allerea>
  <area>
   <id>1</id>
   <title>北京</title>
  </area>
  <area>
   <id>2</id>
   <title>天津</title>
  </area>
  <area>
   <id>3</id>
   <title>南京</title>
  </area>
 </allerea>
 该xml文件在虚拟目录的项目中;
<html>
<head>
<scripte>
  var xmlHttp;
  var flag=false;
  function createXMLHttp(){
   if(window.XMLHttpRequest){//判断当前使用的浏览器
    xmlHttp=new XMLHttpRequest();//表示是使用的FireFox内核的浏览


    }esle{         //表示使用的是ie浏览器
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
   
  function getCity(){
   createXMLHttp();
   xmlHttp.open("POST","allarea.xml");
   xmlHttp.onreadystatechange=getCityCallback;
   xmlHttp.send(null);
  }
  function getCityCallback(){
   if(xmlHttp.readyState==4){
    if(xmlHttp.status==200){
     //取得全部的allarea下的节点
     var

allarea=xmlHttp.responseXML.getElementsByTagName("allarea")[0].childNodes;
     var select =document.getElementById("city");
     select.lenth=1;
     select.option[0].selected=true;
     for(var i=0;i<allarea.length;i++){
      var area=allarea[i];
      var option=document.createElement("option")
      var id=area.getElementsByTagName("id")

[0].firstChild.nodeValue;
      var title=area.getElementsByTagName

("title")[0].firstChild.nodeValue;
      option.setAttribute("value",id);
      option.appendChild(document.createTextNode

(title))
      select.appendChild(option);
     }
    }
  }
  funcition checkForm(){
   return flag;
  }
 </script>
</head>
 <body>
  <form action="regist.jsp" method="post" onsubmit="return checkForm()">
   请选择喜欢的城市:
   <select name="city">
    <option value="0">-请选择城市-</option>
   </select>
   <input type="submit" value="注册">
   <input type="reset" value="重置">
  </form>
 </body>
</html>

虽然是返回了数据,只是所有的数据都是静态的,如果想让数据更有意义,则可以结合DOM
解析完成,如果觉得DOM解析过于麻烦,也可以使用JDOM完成,本次使用DOM解析完成操作;

创建一个servlet:
package city.lid.servlet;
import java.sql.*;
import java.io.*;
import org.w3c.dom.*;//导入DOM操作的包
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class CheckServlet extends HttpServlet{
 
 public void doGet(HttpServletRequest request,HttpServletResponse response) throws

ServletException,IOException{
  this.doPost(request,response);
  }
 public void doPost(HttpServletRequest request,HttpServletResponse response) throws

ServletException,IOException{
  response.setContentType("text/xml;charset=GBK");
  PrintWriter out=response.getWriter();
  ByteArrayOutputStream bos=new ByteArrayOutputStream();
  try{
   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
   DocumentBuilder builder=factory.newDocumentBuilder();
   Document doc =builder.newDocument() ;
   String data[]={"北京","南京","济南",};
   Element allarea=doc.createElement("allarea");
   for(int x=0;x<data.length;x++){
    Element area=doc.createElement("area");
    Element id=doc.createElement("id");
    Element title=doc.createElement("title");
    id.appendChild(doc.createTextNode(""+(x+1)));
    title.appendChild(doc.createTextNode(data[x]));
    area.appendChild(id);
    area.appendChild(title);
    area.appendChild(area);
    }
    doc.appendChild(allarea);
    TransformerFactory tf=TransformerFactory.newInstance();
    Transformer t=tf.newTransformer();
    t.setOutputProperty(OutputKeys.ENCODING,"GBK");
    DOMSource source=new DOMSource();
    StreamResult result=new StreamResult(bos);
    t.transform(source,result);
    out.println(doc);
   }
  catch(Exception e){
   }
  
  }
 }
在web.xml中配置该servlet;

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 b2驾驶证扣4分怎么办 b2驾驶证扣10分怎么办 刚发驾驶证照片太丑想换怎么办! 考驾照时户口变更怎么办 驾照年审色盲未过怎么办 考驾驶证互联网注册号码怎么办 驾驶证体检视力不过关怎么办 六年驾照满了怎么办 驾照扣了40多分怎么办 一个驾照扣24分怎么办 南昌电动车牌照丢了怎么办 上海餐饮工作人员怎么办健康证 房产过户没有遗嘱公证怎么办 在外地被扣12分怎么办 公务员体检视力不过关怎么办弱视 身份证被盗用注册公司怎么办 驾照分卖了12分怎么办 一年12分扣完了怎么办 滴滴车管所信息不同步怎么办 驾驶证过期两个月了怎么办 科目二考试第一次不合格怎么办 科目二不想考了怎么办 科二有事考不了怎么办 科四有事去不了怎么办 社保卡发了密码怎么办 不知道社保卡号怎么办 科目三未到30天怎么办 户口地址变了驾照怎么办 拿了驾照没开车怎么办 免检的车在外地怎么办 2018年b2证扣3分怎么办 科一考试没去怎么办 上海房子卖了户口怎么办 贷款买房买房人不是贷款人怎么办 行驶证驾驶证都遗失了怎么办 c1增驾b2没考过怎么办 没驾照买车怎么办行驶证 广州车辆年审加装踏板怎么办 租车感觉违章了 怎么办 武汉驾照扣12分怎么办 驾驶证照片泡水不清楚怎么办