📄 company.asp
字号:
<html>
<head>
</head>
<body>
<%
Dim objDoc,strXmlFile
Set objDoc = Server.CreateObject("MSXML2.DOMDocument")
objDoc.Async = False
strXmlFile = "Company.xml"
strXmlFile = Server.MapPath(strXmlFile)
If Not objDoc.Load(strXmlFile) Then
Response.Write "<br><hr>"
Response.Write "Error Code: " & objDoc.parseError.errorCode
Response.Write "<br>Error Reason: " & objDoc.parseError.reason
Response.Write "<br>Error Line: " & objDoc.parseError.line
End If
Response.Write "<p>objDoc=Server.CreateObject(""MSXML2.DOMDocument"")"
Response.Write "<br>nodeName:"&objDoc.nodeName
Response.Write "<br>nodeType:"&objDoc.nodeType
Response.Write "<br>nodeTypeString:"&objDoc.nodeTypeString
Response.Write "<br>nodeValue:"&objDoc.nodeValue
Response.Write "<br>text:"&objDoc.text
'Response.Write "<br>xml:"&objDoc.xml
Response.Write "<p>objDoc.firstChild"
Response.Write "<br>nodeName:"&objDoc.firstChild.nodeName
Response.Write "<br>nodeType:"&objDoc.firstChild.nodeType
Response.Write "<br>nodeTypeString:"&objDoc.firstChild.nodeTypeString
Response.Write "<br>nodeValue:"&objDoc.firstChild.nodeValue
Response.Write "<br>text:"&objDoc.firstChild.text
'Response.Write "<br>xml:"&objDoc.firstChild.xml
Response.Write "<p>objDoc.lastChild"
Response.Write "<br>nodeName:"&objDoc.lastChild.nodeName
Response.Write "<br>nodeType:"&objDoc.lastChild.nodeType
Response.Write "<br>nodeTypeString:"&objDoc.lastChild.nodeTypeString
Response.Write "<br>nodeValue:"&objDoc.lastChild.nodeValue
Response.Write "<br>text:"&objDoc.lastChild.text
'Response.Write "<br>xml:"&objDoc.lastChild.xml
Response.Write "<p>objDoc.DocumentElement"
Response.Write "<br>nodeName:"&objDoc.DocumentElement.nodeName
Response.Write "<br>nodeType:"&objDoc.DocumentElement.nodeType
Response.Write "<br>nodeTypeString:"&objDoc.DocumentElement.nodeTypeString
Response.Write "<br>nodeValue:"&objDoc.DocumentElement.nodeValue
Response.Write "<br>text:"&objDoc.DocumentElement.text
'Response.Write "<br>xml:"&objDoc.DocumentElement.xml
set objNode = objDoc.SelectSingleNode("/Company/Department/Employees/Employee/Name")
Response.Write "<p>objNode = objDoc.SelectSingleNode(""/Company/Department/Employees/Employee/Name"") "
Response.Write "<br>nodeName:"&objNode.nodeName
Response.Write "<br>nodeType:"&objNode.nodeType
Response.Write "<br>nodeTypeString:"&objNode.nodeTypeString
Response.Write "<br>nodeValue:"&objNode.nodeValue
Response.Write "<br>text:"&objNode.text
'Response.Write "<br>xml:"&objNode.xml
sub outNodeListText(objNodeList)
for i=0 to objNodeList.length - 1
Response.Write "<br>"& objNodeList.item(i).text
next
Response.Write "<p></p>"
end sub
%>
<pre>
2.1 查询已知绝对路径的节点(集) ============================
set objNodeList = objDoc.SelectNodes("Company/Department/Employees/Employee")
for i=0 to objNodeList.length - 1
Response.Write "<br>"& objNodeList.item(i).text
next
以下是运行显示的结果:
</pre>
<%
set objNodeList = objDoc.SelectNodes("Company/Department/Employees/Employee")
for i=0 to objNodeList.length - 1
Response.Write "<br>"& objNodeList.item(i).text
next
%>
<pre>
或者用
objNodeList = objNode.SelectNodes("/Company/Department/Employees/Employee")
以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;如果没有查询的任何节点返回 Nothing。例如:
set objNode = objDoc.SelectSingleNode("/Company/Department/Employees/Employee")
If Not (objNode is Nothing) then
Response.Write "<br>"& objNode.text
End If
以下是运行显示的结果:
</pre>
<%
set objNode = objDoc.SelectSingleNode("/Company/Department/Employees/Employee")
If Not (objNode is Nothing) then
Response.Write "<br>"& objNode.text
End If
%>
<pre>
2.2 查询已知相对路径的节点(集)
可使用类似于文件路径的相对路径的方式来查询XML的数据
set objNode = objDoc.SelectSingleNode("/Company/Department")
Response.Write "<br>"& objNode.text
Response.Write "<br>"
set objNodeList = objNode.SelectNodes("../Department")
for i=0 to objNodeList.length - 1
Response.Write "<br>"& objNodeList.item(i).text
next
Response.Write "<br>"
set objNode = objNode.SelectNodes("Employees/Employee")
for i=0 to objNode.length - 1
Response.Write "<br>"& objNode.item(i).text
next
运行结果:
</pre>
<%
set objNode = objDoc.SelectSingleNode("/Company/Department")
Response.Write "<br>"& objNode.text
Response.Write "<br>"
set objNodeList = objNode.SelectNodes("../Department")
for i=0 to objNodeList.length - 1
Response.Write "<br>"& objNodeList.item(i).text
next
Response.Write "<br>"
set objNode = objNode.SelectNodes("Employees/Employee")
for i=0 to objNode.length - 1
Response.Write "<br>"& objNode.item(i).text
next
%>
<p>
</p>
<pre>
2.3 查询已知元素名的节点(集)
在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用//符号来越过中间的节点,查询其子、孙或多层次下的其他所有元素。例如:
set objNodeList = objDoc.SelectNodes("Company//Employee")
for i=0 to objNodeList.length - 1
Response.Write "<br>"& objNodeList.item(i).text
next
运行结果:
</pre>
<%
set objNodeList = objDoc.SelectNodes("Company//Employee")
for i=0 to objNodeList.length - 1
Response.Write "<br>"& objNodeList.item(i).text
next
%>
<pre>
2.4 查询属性(attribute)节点
以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可,例如:
set objNodeList = objDoc.SelectNodes("Company/Department/Employees/Employee/@id")
outNodeListText(objNodeList)
set objNodeList = objDoc.SelectNodes("Company//@id")
outNodeListText(objNodeList)
运行结果:
</pre>
<%
set objNodeList = objDoc.SelectNodes("Company/Department/Employees/Employee/@id")
outNodeListText(objNodeList)
set objNodeList = objDoc.SelectNodes("Company//@id")
outNodeListText(objNodeList)
%>
<pre>
2.5 查询Text节点
使用text()来获取Text节点。
????Set objText = objDoc.SelectSingleNode("Company/Department/Deparmt_Name/text()")
Set objNode = objDoc.SelectSingleNode("/Company/Department/Department_Name")
Response.Write objNode.text
运行结果:
</pre>
<%
Set objNode = objDoc.SelectSingleNode("/Company/Department/Department_Name")
Response.Write objNode.text
%>
<p></p>
<pre>
2.6 查询特定条件的节点
使用[]符号来查询特定条件的节点。例如:
Response.Write "<br>a. 返回id号为 10102的Employee节点<br>"
set objNode = objDoc.SelectSingleNode("Company/Department/Employees/Employee[@id='10102']")
Response.Write objNode.text
Response.Write("<br>b. 返回Name为Zhang QI的Name 节点<br>")
set objNode = objDoc.SelectSingleNode("Company/Department/Employees/Employee/Name[text()='Zhang QI']")
Response.Write(objNode.text)
Response.Write("<br>c. 返回部门含有职员22345的部门名称节点 <br>")
set objNode = objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name")
Response.Write(objNode.text)
Response.Write("<br>d. 返回Name为Zhang Qi的Employee_ID节点<br>")
set objNode = objDoc.SelectSingleNode("Company/Department/Employees/Employee[Name/text()='Zhang QI']/Employee_ID ")
'set objNode = objNode.parentNode
Response.Write(objNode.text)
运行结果:
</pre>
<%
Response.Write "<br>a. 返回id号为 10102的Employee节点<br>"
set objNode = objDoc.SelectSingleNode("Company/Department/Employees/Employee[@id='10102']")
Response.Write objNode.text
Response.Write("<br>b. 返回Name为Zhang Qi的Name 节点<br>")
set objNode = objDoc.SelectSingleNode("Company/Department/Employees/Employee/Name[text()='Zhang QI']")
Response.Write(objNode.text)
Response.Write("<br>c. 返回部门含有职员22345的部门名称节点 <br>")
set objNode = objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name")
Response.Write(objNode.text)
Response.Write("<br>d. 返回Name为Zhang Qi的Employee_ID节点<br>")
set objNode = objDoc.SelectSingleNode("Company/Department/Employees/Employee[Name/text()='Zhang QI']/Employee_ID ")
Response.Write(objNode.text)
Response.Write("<br>testtttttttttttttttttttttttttttttttt<br>")
set objNode = objDoc.SelectSingleNode("Company/Department/Employees/Employee[Name/text()='Zhang QI']")
str = objNode.SelectSingleNode("Employee_ID").text
Response.Write str
'set objNode = objNode.previoussibling
'set objNode = objNode.parentNode
'set objNode = objNode.lastchild
if objNode is nothing then
response.Write("对象不存在")
response.end
end if
Response.Write "<br>nodeName:"&objNode.nodeName
Response.Write "<br>nodeType:"&objNode.nodeType
Response.Write "<br>nodeTypeString:"&objNode.nodeTypeString
Response.Write "<br>nodeValue:"&objNode.nodeValue
Response.Write "<br>text:"&objNode.text
Response.Write "<br>xml:"&objNode.xml
%>
<p></p>
<pre>
2.7 查询多重模式的节点
使用 | 符号可以获得多重模式的节点。例如:
set objNodeList = objDoc.SelectNodes("Company/Department/Department_Name | Company/Department/Manager")
outNodeListText(objNodeList)
set objNodeList = objDoc.SelectNodes("Company/Department/Department_Name | Company/Department/Employees/Employee")
outNodeListText(objNodeList)
运行结果:
</pre>
<%
set objNodeList = objDoc.SelectNodes("Company/Department/Department_Name | Company/Department/Manager")
outNodeListText(objNodeList)
set objNodeList = objDoc.SelectNodes("Company/Department/Department_Name | Company/Department/Employees/Employee")
outNodeListText(objNodeList)
%>
<pre>
2.8 查询任意子节点
使用*符号可以返回当前节点的所有子节点。
objNodeList = objDoc.SelectNodes(“Company/*/Manager)
或者
objNodeList = objNode.ChildNodes
</pre>
<%
set objNodeList = objDoc.SelectNodes("Company/*/Manager")
outNodeListText(objNodeList)
set objNodeList = objDoc.ChildNodes
outNodeListText(objNodeList)
set objNodeList = objDoc.DocumentElement.ChildNodes
outNodeListText(objNodeList)
%>
<%
sourceFile = Request.ServerVariables("APPL_PHYSICAL_PATH")
Response.Write(sourceFile)
%>
</body>
</html>
<%
Set objDoc = Nothing
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -