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文件給你發過去。

這裏格式太亂了。

相關文章
相關標籤/搜索