AJAX解析XML(JS代码)
js 代码
- <SCRIPT LANGUAGE="JavaScript">
- var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
- xmlHttp.open("GET", "AJAX", true);
- /* 设置处理服务器的JS函数,函数又 xmlHttp.onreadystatechange来确定 */
- xmlHttp.onreadystatechange=function() {
- if (xmlHttp.readyState==4 && xmlHttp.status==200) {
- //ajax的XML传输的解析。获取解析的数据
- var xml = xmlHttp.responseXML;
- //解析标签<stusn>
- //var root1=root.getElementsByTagName("stusn");
- //解析<stusn>的第一个标签的nation属性
- //var name = root1[0].getAttribute("nation");
- var div1 = document.getElementById("ccc");
- var stus = xml.getElementsByTagName("stu");
- for(var i = 0 ; i < stus.length ; i++){
- var dl = document.createElement("dl");
- var dt = document.createElement("dt");
- var dd = document.createElement("dd");
- //在div的最前面添加元素
- div1.insertBefore(dl,div1.firstChild);
- dl.appendChild(dt);
- dl.appendChild(dd);
- //设置元素的值
- dt.innerHTML = "姓名:" + stus[i].getElementsByTagName("name")[0].firstChild.data;
- dd.innerHTML = "年龄:" + stus[i].getElementsByTagName("age")[0].firstChild.data;
- }
- }
- }
- xmlHttp.send();
- </script>
后台处理代码
java 代码
- import java.io.IOException;
- import java.io.PrintWriter;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class AJAXParseXML extends HttpServlet {
- /**
- * Constructor of the object.
- */
- public AJAXParseXML() {
- super();
- }
- /**
- * Destruction of the servlet. <br>
- */
- public void destroy() {
- super.destroy(); // Just puts "destroy" string in log
- // Put your code here
- }
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- //如果要传输XML,则需要设置传输的类型为text/xml
- response.setContentType("text/xml;charset=gb2312");
- response.setHeader("Cache-Control","no-cache");
- PrintWriter out = response.getWriter();
- // out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
- // out.println("<stusn nation=\"china1\" ></stusn>");
- TestXML tx = new TestXML();
- tx.sendXML(out);
- out.close();
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- }
- public void init() throws ServletException {
- // Put your code here
- }
- }
产生XML文档的代码
java 代码
- import java.io.FileOutputStream;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.ParserConfigurationException;
- import javax.xml.transform.Transformer;
- import javax.xml.transform.TransformerFactory;
- import javax.xml.transform.dom.DOMSource;
- import javax.xml.transform.stream.StreamResult;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- public class TestXML {
- public void sendXML(PrintWriter os){
- Document doc ;
- Element stus;
- Element stu;
- Element name;
- Element age;
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- try {
- DocumentBuilder db = dbf.newDocumentBuilder();
- doc = db.newDocument();
- stus = doc.createElement("stusn");
- stu = doc.createElement("stu");
- name = doc.createElement("name");
- name.appendChild(doc.createTextNode("andrii"));
- age = doc.createElement("age");
- age.appendChild(doc.createTextNode("27"));
- stu.appendChild(name);
- stu.appendChild(age);
- stus.setAttribute("nation", "china");
- stus.appendChild(stu);
- doc.appendChild(stus);
- TransformerFactory tf = TransformerFactory.newInstance();
- Transformer ts = tf.newTransformer();
- // ts.transform(new DOMSource(doc), new StreamResult(new FileOutputStream("D:/test.xml")));
- ts.transform(new DOMSource(doc), new StreamResult(os));
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }