XML JQUERY使用一则

2012年32215:20:27javascript

固然其实,在使用XML 传递数据的时候,开始你们可能由于没有开发过项目的事情,可能都不是很理解,XML在传递数据的时候到底起到了什么做用,这里我不解释 XML的意义和做用以及概念,而是把一个现实咱们的项目的例子拿上来,你们只须要看一下组织结构和读取形式,就能够模仿操做。html

固然 用json加载数据,不管是组织仍是在传递仍是在解析上都比XML 快一些,java

我先把例子呈上来,而后 在说一下 传递的时候应该注意的问题:node

<使用jquery 解析XML数据,asp.net  c#语言做为一个后台。>jquery

1 首先是一个方法,用户 接收一个StringBulider参数,用来传递已经XML格式化的文字段。ajax

    /// <summary>json

    /// 向页面输出xml内容 20111010c#

    /// </summary>浏览器

    /// <param name="xmlnode">xml内容</param>app

    public static void ResponseXML(System.Text.StringBuilder xmlnode)

    {

        //--首先 对特殊字符进行一个转义

        System.Web.HttpContext.Current.Response.Clear();

        System.Web.HttpContext.Current.Response.ContentType = "text/xml";

        System.Web.HttpContext.Current.Response.Expires = 0;

        System.Web.HttpContext.Current.Response.Cache.SetNoStore();

        System.Web.HttpContext.Current.Response.Write(xmlnode.ToString());

        System.Web.HttpContext.Current.Response.End();

    }

而后 这里是一个 方法结构用于 读取的对象 读取如一个XML结构中。

部分代码

                    DataTable ds_1 = d_Dal.GetProductInfoList(strWhere, pageSep, int.Parse(pageindex)).Tables[0];

                    //--rowcount也会发回去表示具备几页的数据正在加载或是能够加载几页的数据

                    int datasetRowcount = d_Dal.GetProductInfoListLength(strWhere);

                    DataRowCollection rowcoll = ds_1.Rows;

                    if (rowcoll.Count > 0)

                    {

                        StringBuilder sb = new StringBuilder();

                        sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");

                        sb.Append("<pro>\n");

                        //那个页面的数据被加载

                        if (whichpage == "1")

                        {

                            foreach (DataRow dr in rowcoll)

                            {

                                object[] objs = dr.ItemArray;

                                sb.Append("<item>\n");

                                sb.AppendFormat("<id>{0}</id>\n", objs[14]);

                                sb.AppendFormat("<model>{0}</model>\n"Function.converSpecChar(objs[1]));

                                sb.AppendFormat("<detail>{0}</detail>\n"Function.converSpecChar(objs[2]));

                                sb.AppendFormat("<t1>{0}</t1>\n", objs[5]);

                                sb.AppendFormat("<t2>{0}</t2>\n", objs[6]);

                                sb.AppendFormat("<t3>{0}</t3>\n", objs[7]);

                                sb.AppendFormat("<state>{0}</state>\n", objs[4]);

                                sb.AppendFormat("<order>{0}</order>\n", objs[3]);

                                sb.AppendFormat("<isdis>{0}</isdis>\n", objs[21]);

                                //--这一行表示的是具备此数据集中有多少行数据辈加载

                                sb.Append("</item>\n");

                            }

                        }

    sb.AppendFormat("<setlength>{0}</setlength>\n", datasetRowcount.ToString());

                        sb.Append("</pro>\n");

                        Function.ResponseXML(sb);

你可能感受很奇怪 这个方法

Function.converSpecChar(

其实XML 仍是JSON 都是一种 对特殊字符十分过敏的组织。若是在XML 组织华中 出现了 < > &等字符的话,XML 结构就会错误。

此时 会致使 在客户端接收 XML数据的时候,火狐出现 未组织好,也就是not well fromat 其实就是由于XML数据没有组织好,到那时,咱们告诉浏览器咱们发送的类型是XML  System.Web.HttpContext.Current.Response.ContentType = "text/xml";

因此,此时 请注意。

这个方法的原型为

  public static string converSpecChar(object inputstring)

    {

        if (inputstring == null)

            return "";

        else

            return inputstring.ToString().Replace("<""<").Replace(">"">").Replace("&""&").Replace("'""'").Replace("\""""");

}

那么在 浏览器端,若是你想在XML中传递已经编码果的HTML标记,那么必须在客户端进行一个相似于上面方法的反转换,

方法以下  是javascript

function fn_conSpecChar(object)

{    if(object!=null)

return object.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&").replace(/'/gi,"'").replace(/"/gi,"\\");

else

return "";

}

在组织好以后 调用    Function.ResponseXML(sb);

 方法会发给请求源。。。

下面是请求源。在客户端

部分代码

function parseXMLData(xmlObject,model,pageIndex)

{

var modelType=getPageIndexOrderURL();

if(xmlObject=="noway")

{

alert("数据组织失败,请联系网站管理员或刷新重试");

return;

}

var itemLength=0;

$("#ajaxLoadArea").html("");

var tableModel=$(model[0]),headerModel=model[1],rowFooter=model[2];

tableModel.append($(headerModel));

if(modelType==1)

{

itemLength=xmlObject.find("setlength").text();

 

$("#ajaxLoadArea").append(tableModel).append(getSepData(itemLength,100,pageIndex));

xmlObject.find("item").each(function(index){

var self=$(this);

var stateText=getStateText(parseInt(self.find("state").text()));

if(self.find("isdis").text()=="True")

tableModel.append($("<tr align='center' style='background-color:#EFF3FB;'><td style='display:none'>"+self.find("id").text()+"</td><td align='center' style='width:80px;'>"+self.find("model").text()+"</td><td align='left' style='width:auto;max-width:300px;'>"+fn_conSpecChar(self.find("detail").text())+"</td><td align='center' style='width:50px' >"+self.find("t1").text()+"</td><td align='center' style='width:50px' >"+self.find("t2").text()+"</td><td align='center' style='width:50px' >"+self.find("t3").text()+"</td><td style='width:40px;'>"+stateText+"</td><td style='width:30px;'>"+self.find("order").text()+"</td><td style='width:130px;'><a  href='javascript:void(0)' style='color:Gray;font-size:Small;'>上架</a> <a  href='javascript:void(0)' style='font-size:Small;'>下架</a>  <a href='javascript:void(0)'   style='font-size:Small;'>删除</a> </td><td style='width:40px;'><a href='javascript:void(0)'>编辑</a></td></tr>")    );

else 

tableModel.append($("<tr align='center' style='background-color:#EFF3FB;color:gray;'><td style='display:none'>"+self.find("id").text()+"</td><td align='left' style='width:80px;'>"+self.find("model").text()+"</td><td align='left' style='width:auto;max-width:300px;'>"+fn_conSpecChar(self.find("detail").text())+"</td><td align='center' style='width:50px' >"+self.find("t1").text()+"</td><td align='center' style='width:50px' >"+self.find("t2").text()+"</td><td align='center' style='width:50px' >"+self.find("t3").text()+"</td><td style='width:40px;'>"+stateText+"</td><td style='width:30px;'>"+self.find("order").text()+"</td><td style='width:130px;'><a  href='javascript:void(0)' style='font-size:Small;'>上架</a> <a  href='javascript:void(0)' style='color:gray;font-size:Small;'>下架</a>  <a href='javascript:void(0)'    style='color:gray;font-size:Small;'>删除</a> </td><td style='width:40px;'><a   style='color:gray;font-size:Small;width:40px' href='javascript:void(0)'>编辑</a></td></tr>")    );

});   

tableModel.append($(rowFooter));

}    




其实很重要的一段代码就是

xmlObject.find("item").each(function(index){

var self=$(this);

var stateText=getStateText(parseInt(self.find("state").text()));

XMLOBJECT 就是接收到的XML数据集,

而后经过XPATH 进行一个循环的查找,而后 在进行组织。。。。

因而这样,,,

201232215:36:37

时间仓促,若是仍是不理解,请加发邮箱 violent.22@163.com 我能够把我写的JS文件给你发过去。

这里格式太乱了。

相关文章
相关标签/搜索