在Asp开发中,XML常被用作轻量级的数据存储载体,通过Asp内置的XML DOM对象可以实现对XML文件的各类操作。下面通过一个完整的实例展示Asp与XML交互的具体实现方式。

Asp操作XML的核心对象
Asp中操作XML主要依赖MSXML2.DOMDocument对象,该对象提供了加载XML文件、遍历节点、修改节点内容、保存文件等一系列方法,是实现Asp与XML交互的基础。
实例需求说明
本实例实现两个核心功能:一是读取一个存储用户信息的XML文件并输出所有用户信息;二是接收表单提交的新用户数据,写入到XML文件中。用户信息的XML文件结构如下:
<?xml version="1.0" encoding="gb2312"?>
<users>
<user>
<id>1</id>
<name>张三</name>
<age>25</age>
</user>
<user>
<id>2</id>
<name>李四</name>
<age>28</age>
</user>
</users>
读取XML文件的实现源码
以下代码实现从指定路径加载XML文件,遍历所有user节点并输出用户信息:
<%
' 创建XML DOM对象
Set xmlDoc = Server.CreateObject("MSXML2.DOMDocument")
' 设置异步加载为false,确保加载完成后再执行后续操作
xmlDoc.async = false
' 加载XML文件,注意路径需要根据实际服务器环境调整
xmlPath = Server.MapPath("users.xml")
xmlDoc.load(xmlPath)
' 检查XML加载是否成功
If xmlDoc.parseError.errorCode <> 0 Then
Response.Write("XML文件加载失败,错误信息:" & xmlDoc.parseError.reason)
Set xmlDoc = Nothing
Response.End
End If
' 获取所有user节点
Set userNodes = xmlDoc.getElementsByTagName("user")
Response.Write("<h3>当前用户列表</h3>")
Response.Write("<ul>")
' 遍历每个user节点,输出子节点内容
For i = 0 To userNodes.length - 1
Set idNode = userNodes(i).getElementsByTagName("id")(0)
Set nameNode = userNodes(i).getElementsByTagName("name")(0)
Set ageNode = userNodes(i).getElementsByTagName("age")(0)
Response.Write("<li>用户ID:" & idNode.text & ",姓名:" & nameNode.text & ",年龄:" & ageNode.text & "</li>")
Next
Response.Write("</ul>")
' 释放对象
Set userNodes = Nothing
Set xmlDoc = Nothing
%>
写入XML文件的实现源码
以下代码接收表单提交的用户ID、姓名、年龄数据,创建新的user节点并追加到XML文件中:
<%
' 仅处理POST请求
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
' 获取表单提交的数据
newId = Request.Form("userid")
newName = Request.Form("username")
newAge = Request.Form("userage")
' 校验数据不为空
If newId = "" Or newName = "" Or newAge = "" Then
Response.Write("请填写完整的用户信息")
Response.End
End If
' 创建XML DOM对象并加载文件
Set xmlDoc = Server.CreateObject("MSXML2.DOMDocument")
xmlDoc.async = false
xmlPath = Server.MapPath("users.xml")
xmlDoc.load(xmlPath)
If xmlDoc.parseError.errorCode <> 0 Then
Response.Write("XML文件加载失败")
Set xmlDoc = Nothing
Response.End
End If
' 获取根节点users
Set rootNode = xmlDoc.documentElement
' 创建新的user节点
Set newUserNode = xmlDoc.createElement("user")
' 创建id子节点并赋值
Set idNode = xmlDoc.createElement("id")
idNode.text = newId
newUserNode.appendChild(idNode)
' 创建name子节点并赋值
Set nameNode = xmlDoc.createElement("name")
nameNode.text = newName
newUserNode.appendChild(nameNode)
' 创建age子节点并赋值
Set ageNode = xmlDoc.createElement("age")
ageNode.text = newAge
newUserNode.appendChild(ageNode)
' 将新的user节点追加到根节点
rootNode.appendChild(newUserNode)
' 保存XML文件,编码设置为gb2312避免中文乱码
xmlDoc.save(xmlPath)
Response.Write("用户信息写入成功")
' 释放对象
Set rootNode = Nothing
Set newUserNode = Nothing
Set idNode = Nothing
Set nameNode = Nothing
Set ageNode = Nothing
Set xmlDoc = Nothing
End If
%>
<!-- 提交用户信息的表单 -->
<form method="post" action="">
<p>用户ID:<input type="text" name="userid" /></p>
<p>姓名:<input type="text" name="username" /></p>
<p>年龄:<input type="text" name="userage" /></p>
<p><input type="submit" value="提交用户信息" /></p>
</form>
代码运行注意事项
- XML文件和Asp脚本需要放在同一目录,或者正确设置
Server.MapPath的参数路径 - XML文件保存的编码需要和Asp页面的输出编码一致,本实例使用gb2312编码避免中文乱码
- 服务器需要开启MSXML2.DOMDocument组件的调用权限,否则会提示创建对象失败
- 写入XML文件时,需要确保Asp进程对XML文件所在的目录有写入权限
总结
通过上述实例可以看出,Asp与XML交互的核心就是熟练使用MSXML2.DOMDocument对象的方法,掌握节点的创建、遍历、追加操作即可实现各类数据交互需求。实际应用中可以根据业务需要扩展更多功能,比如修改指定节点内容、删除指定节点等,实现思路都是在加载XML文件后操作对应的节点即可。