工作 不忙的时候,就学习一下数据的格式。
前两天学习一下json .可以正确的解析,今天倒腾一下xml.
搞了半天,最终在不断的尝试和实现下搞定。网上有一些例子。都是在保存成某个xml 文件。如a.xml。
现在,需要做的是服务器返回一个xml 格式的内容,然后js 来解析。例子很简单,以后可以做为一个基础扩展学习。有什么不足的地方,有指出。共同学习。
在服务器端拼接 xml 格式的内容。以下只贴出主要代码。
String xmlString="<user><name>"+userName+"</name><pwd>"+userPwd+"</pwd></user>"; resp.setContentType("text/xml"); resp.getWriter().print(xmlString);
注:一定要设置为resp.setContentType("text/xml"). 否则为解析不出来。
js 获 取服务器传递的内容。
<script type="text/javascript"> function mySubmit(){ var userName= document.getElementById("userName").value; var userPwd = document.getElementById("userPwd").value; var content="userName="+userName+"&userPwd="+userPwd; sendAjaxRequest("login.do?xx="+Math.random(),content,myBack); }; function myBack(){ if(xhr.readyState==4){ if(xhr.status==200){ var xmlDoc =xhr.responseXML; var xmlTalbe = xmlDoc.getElementsByTagName("user"); for(var i=0;i<xmlTalbe.length;i++){ document.getElementById("msg").innerHTML=xmlTalbe[i].getElementsByTagName("name")[0].childNodes[0].nodeValue +" 密码:"+ xmlTalbe[i].getElementsByTagName("pwd")[0].childNodes[0].nodeValue; } } } };
注:responseXML 中的XML 是大写的。这些都是服务器的内置方法。不可以改变。
服务器发放的是xml 用responseXML 接收。如果服务器发放的是text 则用responseText 接收。
注:一个xml 文件可以包含多个对象Object . 如以上代码。可以包含多个user
<user id=\"OO1\"><name id=\"1\">"+userName+"</name><pwd>"+userPwd+"</pwd></user><user id=\"OO2\"><name id=\"2\">"+userName+"</name><pwd>"+userPwd+"</pwd></user>
但是解析不出来。原因是需要一个共同的父结点。
如:
<users><user id=\"OO1\"><name id=\"1\">"+userName+"</name><pwd>"+userPwd+"</pwd></user><user id=\"OO2\"><name id=\"2\">"+userName+"</name><pwd>"+userPwd+"</pwd></user></users>