`
javaEEdevelop
  • 浏览: 876432 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

jquery 解析xml

 
阅读更多

package cn.limaoyuan.jquery.xml;

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 JqueryServletForXml extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        System.out.println("into JqueryServletForXml");

        //response.setContentType("text/html"); //以text/html方式返回

                                response.setContentType("text/xml");

        response.setCharacterEncoding("gbk");

        String xml = "<?xml version=\"1.0\" encoding=\"gbk\"?><userlist><user><name>limy_1</name><age>25_1</age></user><user><name>limy_2</name><age>25_2</age></user></userlist>";

        response.getWriter().println(xml);

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        doGet(request, response);

    }

}

2.页面的东东

程序代码

<html xmlns="http://www.w3.org/1999/xhtml">

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=gbk" />

        <title>StripingTable</title>

        <style type="text/css">

        <!--

            *.*{

                font-size: 12px;

            }

        -->

        </style>

        

        <script type="text/javascript" src="jquery-1.2.1.js"></script>

        <script type="text/javascript" src="loadxml.js"></script>

        <script type="text/javascript">

        <!--

            $(document).ready(function(){});

            

            function getAjaxByXml(){

            

                $("#info").ajaxStart(function(){

                   $(this).attr("innerHTML","开始加载!");

                 });

                

                 $("#info").ajaxError(function(request, settings){

                   $(this).attr("innerHTML","出错页面:" + settings.url);

                 });

                

                 $("#info").ajaxSuccess(function(){

                   $(this).attr("innerHTML","加载完成!");

                 });

                

                $.post("../servlet/JqueryServletForXml",{t:new Date()},function(data){

                                                                                 //1.服务器设置的text/xml格式

                                                                                var node = data.selectNodes("//user"); //这里data直接就已经是xml对象了,可以直接使用xpath进行解析

                    for(var i=0;i<node.length;i++){

                        var children = node[i].childNodes; //得到user节点的子节点集合

                        var childLen = children.length;

                        for(var j=0;j<childLen;j++){

                            //alert(children[j].firstChild.nodeValue); //得到子节点第一个文本对象的值

                            $("#responseText").append(children[j].firstChild.nodeValue +"  ");

                        }

                    }

                                                                                

                                                                                //2.如果服务器设置返回的是text/html,而又想用xml对象,那么就需要单独来转换一下

                    var xmlDoc = loadXML(false,data);//这时的data只是普通的字条串,经过这步后的xmlDoc才是xml对象了

                    var node = xmlDoc.selectNodes("//user"); //得到所有user节点

                    for(var i=0;i<node.length;i++){

                        var children = node[i].childNodes; //得到user节点的子节点集合

                        var childLen = children.length;

                        for(var j=0;j<childLen;j++){

                            //alert(children[j].firstChild.nodeValue); //得到子节点第一个文本对象的值

                            $("#responseText").append(children[j].firstChild.nodeValue +"  ");

                        }

                    }

                                                                               //3.纯jquery解析xml,前提返回的要是text/xml格式

                    //var name = $(data).find("user").find("name").eq(1).text();//如果单取某一个user可以用eq(index)这个方法                    

                    $(data).find("user").each(function(){

                        var name = $(this).find("name").text();

                        var age = $(this).find("age").text();

                        $("#responseText").append(name+" " + age + "   <br/>");

                    });

                                                                                //4.纯jquery解析xml,方法二!更深奥,当然方法没有第3种简便,关键是掌握取得层次关系可以用find(父级+空格+子级)来定位

                    $(data).find("user").each(function(i){

                        var name = $(data).find("user name").eq(i).text(); //用find的另一个用法(父级+空格+子级)

                        var age = $(data).find("user age").eq(i).text();

                        $("#responseText").append(name+" " + age + "   <br/>");

                    });

                });

            }

        -->

        </script>

    </head>

    <body>

        <input type="button" value="测试服务器回传xml" onclick="getAjaxByXml()"/>

        <div id="responseText"></div>

        <div id="info"></div>

    </bdoy>

</html>

3.提供一个js生成xml对象的类loadxml.js

程序代码

/**

* 封装装载XML的方法,并返回XML文档的根元素节点。

* @param flag true时参数xml表示xml文档的名称;false时参数xml是一个字符串,其内容是一个xml文档

* @param xml 根据flag参数的不同表示xml文档的名称或一个xml文档的字符串表示

*/

function loadXML(flag,xml){

var xmlDoc;

//针对IE浏览器

if(window.ActiveXObject){

var aVersions = ["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Microsoft.XmlDom"];

for (var i = 0; i < aVersions.length; i++) {

try {

//建立xml对象

xmlDoc = new ActiveXObject(aVersions[i]);

break;

} catch (oError) {

}

}

if(xmlDoc != null){

    //同步方式加载XML数据

xmlDoc.async = false;

//根据XML文档名称装载

if(flag == true){

        xmlDoc.load(xml);

} else{

        //根据表示XML文档的字符串装载

        xmlDoc.loadXML(xml);

}

//返回XML文档的根元素节点。

return xmlDoc.documentElement;

}

} else{

//针对非IE浏览器

    if(document.implementation && document.implementation.createDocument){

      /*

       第一个参数表示XML文档使用的namespace的URL地址

       第二个参数表示要被建立的XML文档的根节点名称

       第三个参数是一个DOCTYPE类型对象,表示的是要建立的XML文档中DOCTYPE部分的定义,通常我们直接使用null

       这里我们要装载一个已有的XML文档,所以首先建立一个空文档,因此使用下面的方式

      */

      xmlDoc = document.implementation.createDocument("","",null);

      if(xmlDoc != null){

       //根据XML文档名称装载

        if(flag == true){

          //同步方式加载XML数据

xmlDoc.async = false;

          xmlDoc.load(xml);

        } else{

          //根据表示XML文档的字符串装载

          var oParser = new DOMParser();

          xmlDoc = oParser.parseFromString(xml,"text/xml");

        }

        //返回XML文档的根元素节点。

        return xmlDoc.documentElement;

      }

    }

}

  return null;

}

分享到:
评论

相关推荐

    jQuery 解析xml文件

    关于jq读取xml的,有需要的朋友可以下载。

    JQuery 解析XML省 市 县 三级联动

    在IT领域,尤其是在Web开发中,"JQuery 解析XML省市区县三级联动"是一个常见的需求,主要用于构建交互式的下拉菜单,使得用户在选择省份时,对应的市和县会根据所选省份动态加载。这样的功能可以提升用户体验,减少...

    jQuery解析xml文件,实现省市县三级联动下拉框

    本主题将探讨如何利用jQuery解析XML文件,进而实现省市县三级联动的下拉框效果,这是一种常见的地理数据展示方式,常用于地址选择或者物流配送等场景。 首先,XML(Extensible Markup Language)是一种用于存储和...

    jquery解析xml

    ### jQuery解析XML:深入理解与应用 在Web开发中,数据的处理与展现是至关重要的环节,而XML(可扩展标记语言)作为一种广泛使用的数据交换格式,其在数据存储、传输以及解析方面扮演着重要角色。jQuery,作为一款...

    jquery解析xml并实现二级联动

    本主题将深入探讨如何使用jQuery解析XML数据,并利用这些数据实现省市二级联动的效果。这种功能常见于地理选择,用户在选择省份后,下拉菜单会自动更新展示对应省份的城市选项。 首先,我们需要理解XML(Extensible...

    轻松使用jquery解析XML

    标题中的“轻松使用jQuery解析XML”意味着我们将探讨如何利用JavaScript库jQuery处理XML文档,以便在Web应用程序中方便地获取和操作数据。XML(可扩展标记语言)是一种结构化数据格式,常用于存储和传输数据。jQuery...

    jquery 解析xml的简单例子

    本文将深入探讨如何使用jQuery解析XML(eXtensible Markup Language)文件,这是一种结构化数据存储格式,常用于数据交换和网页应用程序。 首先,我们需要了解jQuery的核心功能之一——`$.ajax()`方法,它是进行...

    Jquery操作xml_Demo

    通过这个简单的 jQuery 和 XML 操作示例,我们了解了如何使用 jQuery 的 `$.ajax()` 函数加载 XML 文件,以及如何使用 jQuery 的选择器和方法来解析和显示 XML 数据。在实际应用中,可以根据需求进行更复杂的数据...

    使用jquery解析XML的方法

    此外,除了使用jQuery解析XML外,还应该了解jQuery如何操作XML,如修改、增加、删除节点,以及如何创建新的XML文档等。这些操作技能使得前端开发者可以灵活处理各种数据交换格式,进而构建功能更加丰富的Web应用。 ...

    JQuery解析XML数据的几个简单实例

    JQuery解析XML数据的几个简单实例中,JQuery是JavaScript的一个库,它简化了JavaScript编程。在处理XML数据方面,JQuery提供了一套非常便捷的方法来解析和操作XML文档。XML是“可扩展标记语言”(Extensible Markup ...

    JQuery解析XML的方法小结

    本文实例总结了JQuery解析XML的方法。分享给大家供大家参考,具体如下: 用JavaScript解析XML数据是常见的编程任务,JavaScript能做的,JQuery当然也能做。下面我们来总结几个使用JQuery解析XML的例子。 第一种方案...

    jquery解析XML及获取XML节点名称的实现代码

    本文将详细讲解如何使用jQuery解析XML文档以及获取XML节点的名称。 首先,让我们了解XML(eXtensible Markup Language)。XML是一种标记语言,常用于存储和传输结构化数据。它通过标签来定义数据的结构,可以被各种...

    jQuery解析XML 详解及方法总结

    本文将详细介绍使用jQuery解析XML的几种方法,以及相关实例。 首先,了解XML和HTML之间的关系是必要的。XML和HTML在语法形式上非常相似,两者都属于标记语言体系。HTML主要是用来定义网页的内容结构,而XML更加灵活...

    jQuery加载并解析XML

    本篇文章将深入探讨如何使用jQuery来加载和解析XML数据,这是一种常见用于传输和存储结构化数据的方式。 首先,我们需要理解XML(Extensible Markup Language)。XML是一种标记语言,允许我们创建自定义的标签来...

    使用jquery解析XML示例代码

    在了解了上述概念和步骤后,你可以更加深入地掌握jQuery解析XML文件的技能,并且应用到实际的项目开发中去。需要注意的是,在实际应用中还需要关注AJAX请求的错误处理,例如,需要编写处理请求失败或数据返回错误的...

    jquery解析xml字符串示例分享

    在本文中,我们将探讨使用jQuery解析XML字符串的技术和方法。在前端开发中,处理XML数据是一种常见任务,而jQuery作为JavaScript的库,提供了强大的工具来简化这一过程。为了达到这个目的,我们会介绍几个使用jQuery...

    jquery解析XML字符串和XML文件的方法说明

    本文将详细介绍如何使用jQuery解析XML字符串和XML文件。 首先,我们来看如何解析XML字符串。在给定的示例中,我们创建了一个XML字符串: ```javascript var xml = "&lt;xml&gt;&lt;root&gt;&lt;record&gt;&lt;name&gt;liubl&lt;/name&gt;&lt;/record...

Global site tag (gtag.js) - Google Analytics