第一步:服务器返回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 文档,则可以通过异步对象的responseXML 属性来获取器XML 数据。而开发者可以利用DOM 的相关方法对其进行处理。 假设服务器返回的XML 文档,如下所示: <?xml version="1.0" ...
使用 xhr.responseXML 来获取响应数据,返回的是XML文档对象 4、解析XML文档对象的内容 1、核心方法 elem.getElementsByTagName("标签的名字"); elem:表示的是获取范围的对象 返回值:返回一个包含指定元素们...
五.Meta数据(Metadata)---专业的XML使用者会使用meta数据来工作。 在HTML中我们知道可以使用meta标识来定义网页的关键字,简介等,这些标识不会显示在网页中,但可以被搜索引擎搜索到,并影响搜索结果的排列顺序。...
Ajax实现responseXML返回信息显示,数据库使用的是sql server2000其中表operator只有四个字段,都是字符型的。
使用responseXML处理返回的XML信息 实战技巧:获取元对象数据 实战技巧:处理列表数据 实战技巧:处理级联的数据 实战技巧:保存更新数据 在普通文本和XML文档之间权衡 何时返回普通文本 何时返回XML文档 innerHTML...
具体描述ajax的获取,ajax属性,参数设置,...其中,4表示ajax对象已经获得了服务器返回的所有的数据。 responseText 获得服务器返回的文本。 responseXML 获得服务器返回的xml文档。 status 获得服务器返回的状态码。
XML和HTML都是标记语言,语法形式非常...下面我们来看看使用jQuery处理XML文件的几种形式方法。 使用JavaScript常规方法解析XML var xmlDoc = request.responseXML; try // Build Markers, if available { var marker
asp.net ajax操作xmlHttpRequest对象返回的ResponseXML和ResponseText例子
接收响应数据 //判断对象的状态是交互完成 if (xmlhttp.readyState == 4) { //判断http的交互是否成功 if (xmlhttp.status == 200) { //使用responseXML的方式来接收XML数据对象的DOM对象 var domObj = ...
ajax传输xml数据:只要把数据封装成xml格式就可以实现传输,前台js用responseXML接收xml参数,后台读取用流和dom4j来解析 前台页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> ...
先总结几个要领: 1)要熟悉javascript对XML文件的加载与操作; DOM的XML操作可参考的示例:http://www.w3school.com.cn/xmldom/met_document_getelementsbytagname.asp 2)在IE下面还是要通过loadXML来转...
responseXML 将响应信息格式化为Xml Document对象并返回,只读 status 返回当前请求的http状态码.只读 statusText 返回当前请求的响应行状态,只读 * 表示此属性是W3C文档对象模型的扩展. 方法: abort 取消...
使用XMLHttpRequest对象的responseXML的方式来接受XML数据对象的DOM对象
ifModified (Boolean) : (默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。 processData (Boolean) : (默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并非字符...
xml格格的文档..
本文实例讲述了ajax遍历xml文档的方法。...前面中的例子是从XMLHttpRequest对象获取服务器响应,并使用XMLHttpRequest对象的responseText属性将响应获取为文本。 这次我们来使用XMLHttpRequest对象的res
代码如下: <% 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
responseText/responseXML :服务器的响应字符串 status:服务器返回的HTTP状态码 statusText: 服务器返回的HTTP状态信息 readyState :对象状态(0-4) 0 = 未初始化 1 = 正在加载 2 = 已加载 3 = 交互...