使用 Asp(vbs) 来读取 XML 数据岛 来制作网站菜单

总的来说还得使用到Microsoft的ActiveX
创建XML对象:createObject("Microsoft.XMLDOM")
读取节点:selectSingleNode("nodename") //nodename为节点名。
读取属性:attributes.getNamedItem("attribute") //attribute为节点中所具有的属性名。
加载Xml文档:Load(Server.MapPath("XMLPath.xml"))  

我写成了一个类,代码如下:

 1 ' ■■■■■■■■■■■■■■■■■■■■■■■■
 2 '                                                ■
 3 '                  读取XML数据岛                   ■
 4 '                                                ■
 5 ' ■■■■■■■■■■■■■■■  By Maple  ■■■
 6 Class XMLReader
 7      Private  xmlDoc
 8
 9      ' 类初始化,创建XMLDOM对象,构造函数
10      private   Sub  Class_initialize()
11          ' 创建XMLDOM对象
12          Set  xmlDoc  =  Server.CreateObject( " Microsoft.XMLDOM " )
13          ' 设置是否可以异步读取
14         xmlDoc.async  =   False
15      End Sub
16     
17      ' 设置XML物理路径
18      Public   Sub  LoadXML(ByVal XPath)
19         xmlDoc.Load(Server.MapPath(XPath))    
20      End Sub
21     
22      ' 在类终止时候释放XMLDOM对象
23      Public   Sub  Class_Terminate()
24          Set  xmlDoc  =   Nothing
25      End Sub
26     
27      ' 选择单个节点
28      Public   Function  SelectSingleNode(ByVal NodeName)
29          Set  SelectSingleNode  =  Doc.SelectSingleNode(NodeName)
30      End Function
31     
32      ' 取得节点下子节点的总数
33      Public   Function  getNodeCount(Node)
34         getNodeCount  =  Node.Length
35      End Function
36
37
38      ' 〓〓〓〓〓〓〓〓〓〓 过程作用解释 〓〓〓〓〓〓〓〓〓〓
39      ' 〓                                                     〓
40      ' 〓                    读取网页菜单列表                 〓
41      ' 〓                                                     〓
42      ' 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓  By Maple  〓〓〓
43      Public   Sub  getWebMenu(xPath)
44          ' 调用Load传入XML物理路径
45         LoadXML(xPath)
46          set  root  =  xmlDoc.documentElement
47          set  nodeList  =  root.childNodes.item( 0 ).childNodes
48         NodeCount  =  getNodeCount(nodeList)
49     
50          For  i  =   1   to  nodeCount 
51          ' 取得下一个节点的值
52              set  node  =  nodeList.nextNode()
53          '     set cost = node.attributes.getNamedItem("cost")
54             Response.Write( " <a href="" " )
55             Response.Write(Node.SelectSingleNode( " URL " ).Text)
56             Response.Write( " ""> " )
57              ' 取得单独的一个节点(Name)的文本
58             Response.Write(node.SelectSingleNode( " Name " ).Text)
59             
60              ' 判断是否为最后一条记录,设置界面所用
61              If  nodeCount  -  i  <>   0   Then
62                 Response.Write( " </a>&nbsp;| " &  vbcrlf
63              Else
64                 Response.Write( " </a> " &  vbcrlf
65              End   If
66             
67          Next
68      End Sub
69     
70      Public   Function  SelectNodes(ByVal XPath)
71          Set  SelectNodes  =  Xml.SelectNodes(XPath)
72      End Function
73 End  Class


XML文件:
 

 1 <? xml version="1.0" encoding="UTF-8" ?>
 2 < Bluesky >
 3
 4      < MentList >
 5          < Link  ID ="1" >
 6              < Name > 首页 </ Name >
 7              < URL > / </ URL >
 8          </ Link >
 9          < Link  ID ="2" >
10              < Name > 信息查询 </ Name >
11              < URL > ?Class=Service </ URL >
12          </ Link >
13          < Link  ID ="3" >
14              < Name > 文章中心 </ Name >
15              < URL > ?Class=Article </ URL >
16          </ Link >
17          < Link  ID ="4" >
18              < Name > 网页特效 </ Name >
19              < URL > ?Class=JScript </ URL >
20          </ Link >
21          < Link  ID ="5" >
22              < Name > 网站收藏夹 </ Name >
23              < URL > ?Class=Favorite </ URL >
24          </ Link >
25          < Link  ID ="6" >
26              < Name > 用户讨论区 </ Name >
27              < URL > ?Class=GuestBook </ URL >
28          </ Link >
29      </ MentList >
30     
31      < PageSize >
32          < Article > 20 </ Article >
33          < JScript > 20 </ JScript >
34          < GuestBook > 15 </ GuestBook >
35      </ PageSize >
36     
37 </ Bluesky >

在使用时只需要实例化该类,便可以使用。

set objDoc = new xmlReader
objDoc.getWebMenu("XML路径")

这样就可以调用该方法并显示网站的菜单页面了

因本人水平有限,如果你有更好的方法不妨交流和改正下,让偶也学习学习先。。

==================================================================

以下代码是在百度问到的,方法有点不一样,吸取了好的地方!!

 1 ' // 首先定义和创建XML对象 
 2 Dim  oXML,oXMLRoot,oXMLItems,oXMLLinks,oXMLItem,iLength,i 
 3
 4 Set  oXML  =   CreateObject ( " Microsoft.XMLDOM " ' // 或 MSXML2.DOMDocument 
 5
 6 ' // 然后加载XML文档 
 7 oXML.load  " XML文件地址 "   ' // 或:oXML.loadXML "XML内容" 
 8
 9 ' // 内容加载完成后,现在来加载它的节点信息 
10 ' // 获取XML所有节点 
11
12 Set  oXMLRoot  =  oXML.documentElement 
13 ' // 获取节点 
14 Set  oXMLItems  =  oXMLRoot.selectNodes( " MentList "
15
16 ' // 此时oXMLItems 变量中已经包含了所有MentList节点的内容。 
17 ' // 如果要获取它下面的 Link 节点的话,用以下语句 
18 ' // 获取节点,设 MentList 节点只有一个,那么0即是它的内容 
19 oXMLLinks  =  oXMLItems( 0 ).selectNodes( " Link "
20 ' // 获取节点长度(个数) 
21 iLength  =  oXMLLinks.length  -   1  
22
23 For  i  =   0   To  iLength 
24 Set  oXMLItem  =  oXMLLinks.item(i) 
25 ' // 用 getAttribute 方法来获取它的属性值 
26 Response.write oXMLItem.getAttribute( " ID "
27 ' // 用 selectSingleNode 方法来获取它的节点值 
28 Response.write oXMLItem.selectSingleNode( " Name " ).text 
29 Response.write oXMLItem.selectSingleNode( " URL " ).text 
30 Next  
31 ' // 释放XML对象 
32 Set  oXMLItem  =   Nothing  
33 Set  oXMLLinks  =   Nothing  
34 Set  oXMLItems  =   Nothing  
35 Set  oXMLRoot  =   Nothing  
36 Set  oXML  =   Nothing  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值