`
红地瓜
  • 浏览: 2496 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

当服务器返回xml文件时则可以使用responseXML方式获取数据

阅读更多
第一步:服务器返回xml的方式:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Random r = new Random();
int a = r.nextInt(20);
//查询学生
List<Stud> ss = new ArrayList<Stud>();
for(int i=0;i<a;i++){
Stud s = new Stud("S"+i,"Jack"+i,i);
ss.add(s);
}
//request.setAttribute("ss",ss);
//request.getRequestDispatcher("/server/stud.jsp").forward(request, response);
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><studs>";
for(Stud s:ss){
xml+="<stud id=\""+s.getId()+"\">" +
"<name>"+s.getName()+"</name>" +
"<age>"+s.getAge()+"</age>" +
"</stud>";
}
xml+="</studs>";
response.setContentType("text/xml;charset=UTF-8");
response.getWriter().print(xml);
}

或是封装到request中以后在jsp页面上,让jsp帮助你组织:
<%@ page language="java" contentType="text/xml" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<?xml version="1.0" encoding="UTF-8"?>
<studs>
<c:forEach items="${ss}" var="s">
<stud id="${s.id}">
<name>${s.name}</name>
<age>${s.age}</age></stud>
</c:forEach></studs>

第二步:在JS客户端用JSDOM解析返回的XML
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <style type="text/css">
  table{
  border-collapse:collapse;
  }
  table td{
  border:1px solid black;
  }
  </style>
  <script type="text/javascript" src="<c:url value='/js/ajax.js'/>"></script>
  <script type="text/javascript">
  function _search(){
  var url = "<c:url value='/QueryServlet'/>";
  xhr.open("GET",url);
  xhr.onreadystatechange=function(){
  if(xhr.readyState==4){
  if(xhr.status==200){
  //此方法是获取任何数据都是可的。只不过类型是string
  //可以通过此方法检查是否返回的数据为正确的数据
  var xml = xhr.responseXML;//返回的就成了一个dom对象
  //获取所有stud元素
  var studs = xml.getElementsByTagName("stud");
  alert(studs);//显示一个对象
  alert(studs.length);
  for(var i=0;i<studs.length;i++){
  //获取第几个属性
  var id = studs[i].attributes(0).value;
  var name = studs[i].childNodes(0);
  name = name.firstChild.data;
 
 
  var age = studs[i].childNodes(1);
  age = age.firstChild.data;
 
      //将新生写到第一行
  var tr = aa.insertRow();
  var td = tr.insertCell();
  td.innerHTML=id;
 
  var td = tr.insertCell();
  td.innerHTML=name;
 
  var td = tr.insertCell();
  td.innerHTML=age;
 
  }
  }
  }
  };
  xhr.send();
  }
  </script>
  </head>
  <body>
    <button onclick="_search();">查询</button>
    <table id="aa" style="width:400px;border:1px solid red;">
    <tr>
    <td>ID</td>
    <td>NAME</td>
    <td>AGE</td>
    </tr>
    </table>
  </body>
</html>


第三步:解析网上的xml服务;

(1)获取网上的一个服务地址:

(2)步测试:成功

(3)查看调用方式

(4) 代码
  <script type="text/javascript">
  function _search(){
  //1:f声明url
  var url = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
  //2:打开
  xhr.open("POST",url);
  //3:设置请求头
  xhr.setRequestHeader("Content-Type","text/xml; charset=utf-8");
  //4:设置状态变化调用方法
  xhr.onreadystatechange=function(){
  if(xhr.readyState==4){
  if(xhr.status==200){
  var xml = xhr.responseXML;
  alert(xml);
  var ns = xml.getElementsByTagName("getMobileCodeInfoResult");
 
  //获取手机信息
  var msg = ns[0].firstChild.data;
  //alert(msg);
  document.getElementById("msg").innerHTML=msg;
  }
  }
  };
  //获取用户的输入的电话
  var code = document.getElementsByName("code")[0].value;
  //5:声明xml数据
  var xml = '<?xml version="1.0" encoding="utf-8"?>'+
  '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'+
  ' xmlns:xsd="http://www.w3.org/2001/XMLSchema" '+
  'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'+
    '<soap:Body><getMobileCodeInfo xmlns="http://WebXml.com.cn/">'+
        '<mobileCode>'+code+'</mobileCode><userID></userID>'+
        '</getMobileCodeInfo></soap:Body></soap:Envelope>';
  //6:请求
  xhr.send(xml);
  }
  </script>


第四步:有没有ajax的情况下调用
用java代码也可以调用:
Urlconnection
@Test
public void aa() throws Exception{
Scanner sc = new Scanner(System.in);
String code = sc.nextLine();
URL url = new URL("http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx");
HttpURLConnection con =
(HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type","text/xml;charset=UTF-8");
con.setDoInput(true);
con.setDoOutput(true);

InputStream in = TestDemo.class.getResourceAsStream("a.xml");
ByteArrayOutputStream bout = new ByteArrayOutputStream();
int len = 0;
byte[] b = new byte[1024];
while((len=in.read(b))!=-1){
bout.write(b,0,len);
}
String xml = new String(bout.toByteArray(),"UTF-8");
xml=xml.replace("${code}",code);

con.getOutputStream().write(xml.getBytes("UTF-8"));

int status = con.getResponseCode();
System.err.println(status);
//从服务器读取数据
in = con.getInputStream();
while((len=in.read(b))!=-1){
String s = new String(b,0,len);
System.err.print(s);
}
in.close();
con.disconnect();
}
分享到:
评论

相关推荐

    AJAX对服务器返回XML的处理方法

    在AJAX 中,服务器端如果返回的XML 文档,则可以通过异步对象的responseXML 属性来获取器XML 数据。而开发者可以利用DOM 的相关方法对其进行处理。 假设服务器返回的XML 文档,如下所示: &lt;?xml version="1.0" ...

    xml浅学笔记

    使用 xhr.responseXML 来获取响应数据,返回的是XML文档对象 4、解析XML文档对象的内容 1、核心方法 elem.getElementsByTagName("标签的名字"); elem:表示的是获取范围的对象 返回值:返回一个包含指定元素们...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    五.Meta数据(Metadata)---专业的XML使用者会使用meta数据来工作。 在HTML中我们知道可以使用meta标识来定义网页的关键字,简介等,这些标识不会显示在网页中,但可以被搜索引擎搜索到,并影响搜索结果的排列顺序。...

    Ajax实现responseXML返回信息显示

    Ajax实现responseXML返回信息显示,数据库使用的是sql server2000其中表operator只有四个字段,都是字符型的。

    北京中科信软AJAX培训

    使用responseXML处理返回的XML信息 实战技巧:获取元对象数据 实战技巧:处理列表数据 实战技巧:处理级联的数据 实战技巧:保存更新数据 在普通文本和XML文档之间权衡 何时返回普通文本 何时返回XML文档 innerHTML...

    ajax异步请求小结

    具体描述ajax的获取,ajax属性,参数设置,...其中,4表示ajax对象已经获得了服务器返回的所有的数据。 responseText 获得服务器返回的文本。 responseXML 获得服务器返回的xml文档。 status 获得服务器返回的状态码。

    jQuery处理XML文件的几种方法

    XML和HTML都是标记语言,语法形式非常...下面我们来看看使用jQuery处理XML文件的几种形式方法。 使用JavaScript常规方法解析XML var xmlDoc = request.responseXML; try // Build Markers, if available { var marker

    asp.net ajax操作xmlHttpRequest对象返回的ResponseXML和ResponseText例子

    asp.net ajax操作xmlHttpRequest对象返回的ResponseXML和ResponseText例子

    XMLHttpRequest处理xml格式的返回数据(示例代码)

    接收响应数据 //判断对象的状态是交互完成 if (xmlhttp.readyState == 4) { //判断http的交互是否成功 if (xmlhttp.status == 200) { //使用responseXML的方式来接收XML数据对象的DOM对象 var domObj = ...

    Ajax如何传输Json和xml数据

    ajax传输xml数据:只要把数据封装成xml格式就可以实现传输,前台js用responseXML接收xml参数,后台读取用流和dom4j来解析 前台页面 &lt;&#37;@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt; ...

    异步调用webservice返回responseXML为空的问题解决方法

    先总结几个要领: 1)要熟悉javascript对XML文件的加载与操作; DOM的XML操作可参考的示例:http://www.w3school.com.cn/xmldom/met_document_getelementsbytagname.asp 2)在IE下面还是要通过loadXML来转...

    XMLHttpRequest手册

    responseXML 将响应信息格式化为Xml Document对象并返回,只读 status 返回当前请求的http状态码.只读 statusText 返回当前请求的响应行状态,只读 * 表示此属性是W3C文档对象模型的扩展. 方法: abort 取消...

    jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML

    使用XMLHttpRequest对象的responseXML的方式来接受XML数据对象的DOM对象

    jquery电子文档chm

    ifModified (Boolean) : (默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。 processData (Boolean) : (默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并非字符...

    xml格式文档

    xml格格的文档..

    ajax遍历xml文档的方法

    本文实例讲述了ajax遍历xml文档的方法。...前面中的例子是从XMLHttpRequest对象获取服务器响应,并使用XMLHttpRequest对象的responseText属性将响应获取为文本。 这次我们来使用XMLHttpRequest对象的res

    ASP调用远程XML数据的代码(alexa排名数据)

    代码如下: &lt;&#37; URL=”http://news.163.com/special/00011K6L/rss_newstop.xml” Set xml = Server....xmlDom.async=False xmlDom.ValidateOnParse=false xmlDom.load(xml.responseXML) if xmlDom.Ready

    Ajax异步请求响应.java

    responseText/responseXML :服务器的响应字符串 status:服务器返回的HTTP状态码 statusText: 服务器返回的HTTP状态信息 readyState :对象状态(0-4) 0 = 未初始化 1 = 正在加载 2 = 已加载 3 = 交互...

Global site tag (gtag.js) - Google Analytics