mud_sanc 板


LINE

這是我今天學會的東西。往後我在公司有學會什麼我覺得 不錯的,能夠分享出來的話我都會分享。這東西很簡單, 我以前不會,現在會了,我就希望有看的人也都能會。 ================================================== 所謂 xml 是指類似底下的東西 <sanc> <player> <id>"laechan"</id> <level>120</level> . . </player> <player> <id>"norr"</id> <level>120</level> . . </player> </sanc> 我今天學會的東西是,把上面的 xml send 給 server 端 ,然後讀取 server 端傳回來的 xml 資料。 底下是 asp 檔的內容 <% ' 先 call 個物件,類似 ob = find_object_or_load("/adm/daemons/xmlhttp.c"); ' 底下的物件就是專做 xml 的 request/response 用的 set xmlob = server.createobject("MSXML2.XMLHTTP") ' 類似很多程式語言都會看到的 file open, 有 open 的動作才能做 ' read, write, etc..., 底下就類似這樣的動作 xmlob.open("POST","server端要跟我互動的API頁面網址",false) ' 接著就把上面那一串 xml 內容用字串包起來後, send 給對方 ' xml 內有字串引數時就像這樣 ".....<id>""laechan""</id>....." ' 這樣對方收到的就是 <id>"laechan"</id> xmlob.send "<sanc><player>.........</sanc>" ' 底下是判斷傳送有沒有成功, 值 4 代表有成功傳給對方 if xmlob.readystate = 4 then ' 就再 call 出一個專門用來存放 xml 資料的物件 ' 同樣的底下也是類似 find_object_or_load 一個物件的意思 set xml = server.createobject("MSXML2.DOMDocument") ' 這行固定的 xml.Async = false ' xml call 出來後,就可以用底下動作把 xmlob 接收到的 ' response 給存進 xml 這個物件裡頭 ' 類似 xml = xmlob->loadXML() 或 xmlob->loadXML(xml) ' 然後 loadXML 函數(方法) 就是把資料存進 xml 裡頭 xml.loadXML = xmlob.ResponseText ' 這時候 xml 這個物件就有了從 server 端回來的資料 ' 底下就可以開始從 xml 這個物件裡面撈資料 例如說,我們送去的 xml 長成底下這樣 <sanc> <request>select-player-data</request> <sanc> server 端看到我送上面的東西給它,於是就回給我全聖殿玩 家的資料,並包在 xml 裡頭,如下.. <sanc> <player> <id>"laechan"</id> <level>120</level> . . </player> <player> <id>"norr"</id> <level>120</level> . . </player> </sanc> 底下就介紹怎麼簡單的解析。比方說我們知道傳回來的資料它 的格式就是長成上面那樣子,我們知道有 sanc、player、id 等欄位,那我要撈資料就是這樣.. ' 先撈出 <sanc> 這一層的資料 sancdata = xml.SelectSingleNode("sanc") ' 再往下撈出 <player> 這一層的資料 playerdata = sancdata.SelectSingleNode("player") 而 player 資料如上所示,每一個 player 就一組,有 n 組, 撈法就是這樣.. ' playerdata 你可以想成它是一個 m x n 維陣列資料 for i = 0 to playerdata.length - 1 ' 這裡可想成讀取每一"排"子陣列 set eachppl = playerdata.item(i) ' 這裡就很像讀取每一"排"子陣列裡面的每個元素 for each ppl in eachppl.ChildNodes set keyname = ppl.nodeNames set ppldata = playerdata.SelectSingleNode(keyname) ' 這裡就類似 write(xxx+" = "+ppldata(xxx)+"\n"); Response.write keyname & " = " & ppldata.nodeTypesValue Next Next end if %> 上面的東西類似底下.. // 假設有個 simul_efun 可以撈出全玩家的資料 mixed playerdata = get_playerdata(); /* 假設資料長這樣 ({ ({ "id:laechan","level:120","race:human",...}), ({ "id:norr" ,"level:120","race:stoneman",...}), . . }) */ // 看有幾排資料 j=sizeof(playerdata); for(i=0;i<=j-1;i++) { // 讀取每一排的 sizeof jj=sizeof(playerdata[i]); for(ii=0;ii<=jj-1;ii++) { sscanf(playerdata[i][ii],"%s:%s",keyname,v); write(keyname+" = "+v); } } 這就是我今天學會的東西。 Laechan --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.7.33 ※ 編輯: laechan 來自: 122.117.7.33 (03/07 23:13)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP