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