• yam天空
  • 天空部落
  • 新聞
  • 登入 註冊 網誌隨便逛
  • 加入天空部落
  • 讓我們一起搖滾吧!

網誌 相簿 影音 PK吧! Honda嬉遊趣 設計裝潢‧宅樂活 大買家最便宜
即時新聞 影音新聞 新聞專輯 政治新聞 財經新聞 娛樂新聞 運動新聞 兩岸新聞 科技新聞
管理介面 發表網誌 發表日記 上傳相片 上傳影音 管理留言
推薦這個部落格: 194

A HA! 心情雜物間

專供個人碎碎念的心得小屋,或是好物分享~~ ^_^

日記 |網誌 |相簿 |好友 |留言板
美國怪談:鬼殺人 An American Haunting | 主頁 | 線上素材推薦
July 24, 2006
如何用 ASP 來讀 XML以文找文
csylvia 在天空部落發表於12:03:17 | ASP
鼓勵此網誌:0 

今天同事問我如何用 ASP 來讀 XML 的資料,
我知道如何用 C 和 JavaScript 來讀,可是用 ASP......倒是沒試過,
不知道是不是一樣。

到網路上去找看看,看到了範例,嗯~~果然是差不多的~~(笑)


我也來寫個簡單的範例吧!

 

test.xml


<?xml version="1.0" encoding="big5"?>
<Persons>
  <Person name="sale">
    <Name>張三</Name>
    <Mobile>123XXXXXXXX</Mobile>
    <Name>李四</Name>
    <Mobile>456XXXXXXXX</Mobile>
  </Person>
  <Person name="mart">
    <Name>王五</Name>
    <Mobile>789XXXXXXXX</Mobile>
  </Person>
</Persons>

 

這是一個 XML 的資料範例,如果想讀內部所有的成員資料,可用以下的方法讀出:

 

text.asp


<%
   Dim oXML, oXMLError, ReturnValue, x
  
   ' Initial component
   Set oXML = Server.CreateObject("MSXML2.DOMDocument")
  
   ' Set properties
   oXML.async = false
   oxml.setProperty "ServerHTTPRequest", true
  
   ' Load XML
   ReturnValue = oXML.Load("test.xml")
  
   ' Get data
   Set objNode = oXML.getElementsByTagName("Name")
   For x = objNode.length-1 To 0 Step-1
     Response.Write objNode.item(x).Text&"<br/>"
   Next
  
   Set oXML = Nothing
%>

 

對已經有讀取 XML 經驗的人,相信應該對此語法很熟悉吧,
故在此不再贅述,
此範例會陸續印出「王五、李四、張三」。

若是只想要印出某單位人事資料,譬如只想要 <Person name="sale"> 裡的兩人,
則可用:

 

text.asp


<%
   Dim oXML, oXMLError, ReturnValue, x
  
   ' Initial component
   Set oXML = Server.CreateObject("MSXML2.DOMDocument")
  
   ' Set properties
   oXML.async = false
   oxml.setProperty "ServerHTTPRequest", true
  
   ' Load XML
   ReturnValue = oXML.Load("test.xml")
  
   ' Get data
   Set objNode = oXML.selectNodes("/Persons/Person[@name='sale']/Name")
   For each x in objNode
     Response.Write x.Text&"<br/>"
   Next
  
   Set oXML = Nothing
%>

 

其中標明的「"/Persons/Person[@name='sale']/Name"」這一行是使用了 XSL 擷取資料的技巧,
XSL 中有提供幾個關鍵字(摘自《最新 XML 入門與應用》,松崗電腦圖書資料股份有限公司):

 

關鍵字元說明
/ 代表某一元素下一層的子元素
// 代表某一元素之下的所有子元素,包含子元素下的子元素
. 代表目前的節點位置,即模式設定所在的節點
.. 代表目前節點的上一層節點,即模式設定的父節點
* 表示任一子元素或屬性的萬用字元
@ 代表某一元素的屬性
[] 附加的選擇條件
| 結合多個選擇路徑

 

所以「"/Persons/Person[@name='sale']/Name"」就代表取得 <Persons>下的<Person>中,name 屬性等於 sale的 <Name>標籤資料。

其他更多進階資訊,可至網路上找找喔~~ ^^

 

  • Building Smart Pages with ASP, XML and XSL
  • 在ASP中使用RSS
  • XML技術實務
  • 好多资源网 -- XML教程 -- ASP+XML编程
  • 利用ASP发送和接收XML数据的处理方法 - 沐风经典
  • ASP Scripts, ASP Example Programs, ASP Sample Code, ASP Examples(非常讚!)

 

留言 (5) | 引用 (0) | 人氣 () | 轉寄
此分類上一篇:驗證碼產生器 | 主頁 | 此分類下一篇:顯示ASP程式的錯誤訊息
引用 (你可以針對此文寫一篇屬於自己的blog/想法,並給作者一個通告)
引用
留言 (5筆)
1.
csylvia您好:

  因為你所放的網址有幾個已經看不到了。我想請問,用asp如何能夠把讀入的xml透過xsl再寫回到網頁中。
  如果您不嫌棄請稍做指點。fa.yin@msa.hinet.net是我的信箱兼msn。工作上目前需要,卻仍摸不著頭緒。希望您能回覆可憐的小女子。感謝!

fayin
板主回覆:
據說已經解決了,那就好~~ ^^
fayin 於 2008-01-29 00:15:43 留言 |

2.
為什麼我照著上面的範例(test.xml,test.asp)卻印不出任何東西呀?(畫面一片空白)
板主回覆:
^^
Jaker 於 2008-02-27 16:31:05 留言 |

3.
我知道了.oXML.Load也是要用絕對位置呀Orz
板主回覆:
有找到答案就好~~ ^^a
Jaker 於 2008-02-27 16:57:38 留言 |

4.
你好, 我現在正利用ASP 去 修正XML 中的DATA
但正常來說應該會有個ASP PAGE 去SHOW 個RESULT 出黎,
但係我想可以直接改到XML個DATA , 而唔會幫我CHANGE 左去另一個PAGE
請問有方法可以做到嗎?
感謝
板主回覆:
你的意思是發個 request 給 ASP 去修改 XML 資料嗎?
如果不想讓網頁頁面更新的話,就要使用 AJAX 技術囉~~ ^^
星 於 2009-02-15 00:34:03 留言 |

5.
您好,
如果想要用asp寫入資料到xml檔中,
請問要怎麼做呢?

試了網頁上很多的教學,都試不出來!
板主回覆:
不太清楚你的「試不出來」是什麼意思?
是出現錯誤訊息?還是沒有錯誤訊息但資料沒有寫入?
是寫進既有的 XML 檔?還是重新產生一個 XML 檔?
是寫入權限的問題?
.
這樣我實在沒辦法回答哩~~@@
Victor 於 2009-04-22 14:02:29 留言 |

發表你的留言 (字數限制 最多 2000 個中文字)
私密留言: 是 否
Name:





是 否
內容:
系統公告
系統工具


Sylvia 小檔案
個人圖檔
ID:csylvia
暱稱:Sylvia
地區:臺北市
  • 訂閱 |
    • 我要訂閱此部落格的
    • 日記
    • 網誌
    • 相簿
  • 好友 |
    • 好友功能
    • 觀看好友列表
    • 觀看人緣列表
  • 人氣 |
  • 簡介 

文章分類
  • 生活資訊 (6)
    • 螢養保健 (11)
    • 小辭典 (13)
    • 飲食美味 (2)
    • 美容美髮 (2)
    • 體操按摩 (5)
    • 有用資訊 (10)
  • 資源連結 (4)
    • 資源整理 (12)
    • 噗浪 (8)
    • 介紹&推薦 (45)
    • BLOG小玩意 (44)
  • 真人電影 (4)
    • 電影介紹&推薦 (20)
    • 西洋電影 (35)
    • 東洋電影 (2)
    • 國片電影 (4)
  • 語言筆記 (3)
    • 英文 (4)
    • 其他語言 (1)
    • 日文 (6)
  • 創作欣賞 (7)
    • 串珠飾品 (12)
    • 毛線球 (2)
    • 文章 (1)
    • 設計 (2)
    • 不織布 DIY (5)
    • 其他創作 (1)
    • CG (8)
  • 電視影集 (3)
    • 綜藝節目 (7)
    • 紀錄片/連續劇 (11)
    • 經典影集 (12)
  • 科技資訊 (19)
    • C/C++ (58)
    • AJAX (37)
    • Code::Blocks 相關 (29)
    • WM5.0 (26)
    • Symbian (26)
    • ActiveX (22)
    • AIR (2)
    • ASP (9)
    • JavaScript (29)
    • FLASH (9)
    • 網頁相關 (8)
    • PHP (3)
    • Database (3)
    • 其他 (29)
    • Install (2)
    • SOAP (1)
    • VLC (14)
    • Linux 相關 (2)
    • Batch File (8)
  • 動漫遊戲 (3)
    • 西洋動漫 (9)
    • 其他動漫 (1)
    • 日本動漫 (22)
  • Amway (3)
    • 其他筆記 (0)
    • 智囊團 (0)
    • 紀錄 (4)
  • 個人記事 (6)
  • 書籍藝文 (29)
  • 話題探討 (28)
csylvia的最新的回應
  • Wesley:
    好久以前的東西,都忘光...
  • Wesley:
    妳真是好人
  • jamie:
    我也有類似的經驗,...
  • 小豬仔:
    Hi Sylvia,...
  • Anne:
    NANA...
  • Anne:
    嗯. ...
  • Anne:
    有去租來看過. ...
  • Anne:
    不過"窈窕野...
  • 小鼻:
    哈~!妳超力害的 ...
  • 小豬仔:
    Hello...
網站集結
迷你窩 miniworld
aNobii 書櫃
珍惜台灣
天下雜誌綠色行動4力串聯貼紙



台灣是我的國家

台灣貨‧暢其流
該推就是要推

禁虐

搶救生命 棄兒不捨!
天下雜誌台灣不願面對的真相貼紙



Chine Free

力挺泰山串聯貼紙
天氣
台北
-
RANKING
Google PageRank Checker



Free PageRank Meter for blog.webs-tv.net/csylvia
人氣指數
當日人次:
累積人次:
網誌搜尋
搜尋:
參觀者
RSS 訂閱


RSS 訂閱
RSS2
ATOM
贊助商
其它資訊
本部落所刊登之內容,皆由作者個人所提供,不代表 yam 天空 本身立場。
POWERED BY
POWERED BY 天空部落
會員登入│免費註冊