⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 company.asp

📁 《XML语言及应用》作者华铨平—examples
💻 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 "&lt;br&gt;"& 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 "&lt;br&gt;"& 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 "&lt;br>"& objNode.text
	Response.Write "&lt;br>"
	set	objNodeList = objNode.SelectNodes("../Department")
	for i=0 to objNodeList.length - 1
		Response.Write "&lt;br>"& objNodeList.item(i).text
	next
	Response.Write "&lt;br&gt;"
	set objNode = objNode.SelectNodes("Employees/Employee") 
	for i=0 to objNode.length - 1
		Response.Write "&lt;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 "&lt;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 "&lt;br>a. 返回id号为 10102的Employee节点&lt;br>"
	set objNode = objDoc.SelectSingleNode("Company/Department/Employees/Employee[@id='10102']") 
	Response.Write objNode.text
	
	Response.Write("&lt;br>b. 返回Name为Zhang QI的Name 节点&lt;br>")
	set objNode = objDoc.SelectSingleNode("Company/Department/Employees/Employee/Name[text()='Zhang QI']") 
	Response.Write(objNode.text)
	
	Response.Write("&lt;br>c. 返回部门含有职员22345的部门名称节点 &lt;br>")
	set objNode = objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name") 
	Response.Write(objNode.text)
	
	Response.Write("&lt;br>d. 返回Name为Zhang Qi的Employee_ID节点&lt;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 + -