ZetCode

VBScript ReplaceChild 方法

最后修改于 2025 年 4 月 9 日

VBScript 中的 ReplaceChild 方法是 XML DOM(文档对象模型)的一部分。它在 XML 文档结构中用另一个节点替换一个子节点。此方法对于 VBScript 应用程序中的动态 XML 操作至关重要。

ReplaceChild 需要新节点和要替换的节点。如果成功,它将返回被替换的节点。本教程将通过实际示例涵盖 ReplaceChild,以演示其在各种场景下的用法。

ReplaceChild 方法概述

ReplaceChild 方法接受两个参数:新节点和要替换的旧节点。它必须在包含要替换的子节点的父节点上调用。该方法可通过 VBScript 中的 XML DOM 访问。

主要功能包括维护节点层次结构和 DOM 结构完整性。如果旧节点不是调用节点的子节点,它将抛出错误。ReplaceChild 对于 XML 文档操作至关重要。

基本节点替换

此示例演示了 ReplaceChild 最简单的用法,用另一个元素节点替换一个元素节点。它展示了加载 XML、创建新节点和执行替换。

basic_replace.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<root><oldNode>Content</oldNode></root>"

Set newElem = xmlDoc.createElement("newNode")
newElem.text = "New Content"

Set oldNode = xmlDoc.documentElement.firstChild
xmlDoc.documentElement.replaceChild newElem, oldNode

WScript.Echo xmlDoc.xml
Set xmlDoc = Nothing

脚本创建一个带有一个子节点的 XML 文档。然后它创建一个新节点并替换现有节点。输出显示更新后的 XML,其中新节点已替换旧节点。

替换文本节点

此示例演示了如何使用 ReplaceChild 替换元素内的文本节点。它展示了在 XML DOM 中处理不同节点类型。

replace_textnode.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<book><title>Old Title;<title></book>"

Set newText = xmlDoc.createTextNode("New Title")
Set oldText = xmlDoc.documentElement.firstChild.firstChild

xmlDoc.documentElement.firstChild.replaceChild newText, oldText
WScript.Echo xmlDoc.xml
Set xmlDoc = Nothing

脚本加载包含书名的 XML。它创建一个新的文本节点并替换现有的书名文本。请注意,在替换之前,我们是如何导航到标题元素的文本节点子项的。

替换属性

虽然属性不是子节点,但此示例展示了如何通过将属性节点与 ReplaceChild 一起使用来模拟属性替换。它展示了高级 DOM 操作技术。

replace_attribute.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<product id='123' status='old'/>"

Set newAttr = xmlDoc.createAttribute("status")
newAttr.value = "new"

Set elem = xmlDoc.documentElement
Set oldAttr = elem.getAttributeNode("status")

elem.replaceChild newAttr, oldAttr
WScript.Echo xmlDoc.xml
Set xmlDoc = Nothing

脚本通过将状态属性视为子节点来替换它。此方法需要先获取属性节点。输出显示 XML 中更新的属性值。

条件节点替换

此示例演示了仅在满足特定条件时替换节点。它展示了 ReplaceChild 在具有决策逻辑的实际场景中的应用。

conditional_replace.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<items><item>Apple</item><item>Orange</item></items>"

Set newItem = xmlDoc.createElement("item")
newItem.text = "Banana"

For Each node In xmlDoc.documentElement.childNodes
    If node.text = "Orange" Then
        xmlDoc.documentElement.replaceChild newItem, node
        Exit For
    End If
Next

WScript.Echo xmlDoc.xml
Set xmlDoc = Nothing

脚本在执行替换之前搜索特定的节点值。它仅将“Orange”项目替换为“Banana”。此模式对于选择性 XML 修改很有用。

使用导入的节点替换

此高级示例展示了如何使用从另一个文档导入的节点替换节点。它展示了 VBScript 中的跨文档节点操作。

import_replace.vbs
Set srcDoc = CreateObject("Microsoft.XMLDOM")
srcDoc.async = False
srcDoc.loadXML "<newSection><data>Important</data></newSection>"

Set mainDoc = CreateObject("Microsoft.XMLDOM")
mainDoc.async = False
mainDoc.loadXML "<document><section>Old</section></document>"

Set newNode = mainDoc.importNode(srcDoc.documentElement, True)
Set oldNode = mainDoc.documentElement.firstChild

mainDoc.documentElement.replaceChild newNode, oldNode
WScript.Echo mainDoc.xml

Set srcDoc = Nothing
Set mainDoc = Nothing

脚本在替换之前将一个节点从一个 XML 文档导入到另一个文档。importNode 方法用于使节点兼容。此技术对于合并 XML 文档很有用。

来源

XML DOM 文档

在本文中,我们探讨了 VBScript 中的 ReplaceChild 方法,涵盖了它的用法和实际应用。从简单的节点替换到高级的跨文档操作,这些示例展示了强大的 XML 操作。有了这些知识,您可以增强 XML 处理脚本。

作者

我叫 Jan Bodnar,我是一名充满热情的程序员,拥有多年的编程经验。我自 2007 年以来一直在撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有八年以上的经验。

列出所有 VBScript 教程