VBScript通过MSXML2.DOMDocument.6.0对象可加载、解析、修改和保存XML;支持文件/字符串加载、XPath查询、节点增删改及保存,但无内置格式化功能。

VBScript 使用 MSXML2.DOMDocument 对象可以方便地加载、解析、修改和保存 XML 文件。这是 Windows 系统中默认支持的 COM 组件,无需额外安装(XP 及以后系统基本都自带 MSXML 3.0 或更高版本,推荐用 MSXML2.DOMDocument.6.0 提高性能与安全性)。
加载 XML 文件或字符串
支持从文件路径或 XML 字符串加载内容:
- 从文件加载:Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")
xmlDoc.async = False
xmlDoc.load "C:\data.xml" - 从字符串加载:xmlDoc.loadXML "
"- A
- 加载后务必检查是否成功:If xmlDoc.parseError.errorCode 0 Then WScript.Echo "加载失败:" & xmlDoc.parseError.reason
查询节点(XPath 支持)
使用 selectSingleNode 或 selectNodes 配合 XPath 表达式获取元素:
- 查单个节点:Set node = xmlDoc.selectSingleNode("/root/item[@id='1']")
- 查多个节点:Set nodeList = xmlDoc.selectNodes("/root/item")
For i = 0 To nodeList.length - 1
WScript.Echo nodeList(i).text
Next - 注意:XPath 区分大小写,且属性需用
@attr语法;若文档有命名空间,需先设置xmlDoc.setProperty "SelectionNamespaces", "xmlns:x='http://example.com'"
创建和修改节点
可动态添加、更新或删除节点:
- 创建新元素:Set newItem = xmlDoc.createElement("item")
newItem.setAttribute "id", "2"
newItem.text = "B" - 追加到父节点:xmlDoc.documentElement.appendChild newItem
- 修改已有值:node.text = "Updated" 或 node.setAttribute "status", "done"
- 删除节点:node.parentNode.removeChild node
保存 XML 到文件
调用 save 方法写入磁盘(路径必须存在,否则报错):
- xmlDoc.save "C:\data_new.xml"
- 如需格式化缩进(默认无换行缩进),VBScript 本身不支持自动美化,可手动拼接字符串,或借助 XSLT 转换(较复杂),一般生产环境建议改用 PowerShell 或其他语言处理格式化需求
- 保存前建议验证:If xmlDoc.documentElement Is Nothing Then WScript.Echo "文档为空,无法保存"










