用 ASP 來讀 XML

  • Share this:

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

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>標籤資料。


Tags: