总的来说还得使用到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> | " ) & 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
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> | " ) & 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 >
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
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