ZetCode

VBScript childNodes 属性

最后修改于 2025 年 4 月 9 日

VBScript 中的 childNodes 属性是 XML DOM 实现的一部分。它返回指定节点的所有子节点的集合。此属性对于导航和操作 XML 文档至关重要。它提供了对层次结构中元素节点和文本节点的访问。

childNodes 是只读的,并返回一个 NodeList 对象。该集合包括所有直接子节点,无论节点类型如何。本教程通过实际示例介绍 childNodes,以演示 VBScript 中的 XML 处理。

childNodes 属性概述

childNodes 属性属于 XML DOM Node 接口。它提供对节点所有直接子节点的访问。返回的 NodeList 是实时的,会随着文档的更改而自动更新。节点从 0 开始索引。

重要方面包括处理空白文本节点和元素节点。该属性适用于已加载的 XML 文档和动态创建的节点。理解 childNodes 是 XML 处理的基础。

基本 XML 文档遍历

此示例演示了使用 childNodes 进行 XML 文档的基本遍历。它展示了如何访问和显示子节点。脚本加载一个简单的 XML 字符串并检查其结构。

basic_traversal.vbs
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.loadXML "<root><item>First</item><item>Second</item></root>"

Set root = xmlDoc.documentElement
For Each child In root.childNodes
    WScript.Echo child.nodeName & ": " & child.text
Next

Set xmlDoc = Nothing

脚本创建一个包含两个 item 元素的 XML 文档。它访问根元素的 childNodes 集合。显示每个子节点的名称和文本内容。这展示了基本的 XML 导航。

计算子节点数

此示例演示了使用 childNodes 长度属性。它展示了如何确定节点包含的子节点数。计数包括所有节点类型,而不仅仅是元素。

count_nodes.vbs
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.loadXML ">books>>book/>>book/>>book/>>/books>"

Set books = xmlDoc.documentElement
WScript.Echo "Number of book elements: " & books.childNodes.length

Set xmlDoc = Nothing

脚本加载一个包含三个 book 元素的 XML 文档。它访问 books 元素的 childNodes.length 属性。输出显示直接子节点的计数。这对于验证很有用。

访问特定子节点

此示例展示了如何使用 childNodes 集合中的索引访问特定节点。它演示了零基索引和直接节点访问。脚本检索并显示一个特定的子节点。

specific_node.vbs
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.loadXML "<colors><color>Red</color><color>Green</color><color>Blue</color></colors>"

Set colors = xmlDoc.documentElement
Set secondColor = colors.childNodes(1)
WScript.Echo "Second color: " & secondColor.text

Set xmlDoc = Nothing

脚本加载一个包含三个 color 元素的 XML 文档。它使用索引 1(零基)访问第二个 color。显示了特定节点的文本内容。这展示了定向节点访问。

处理不同的节点类型

此示例演示了处理 childNodes 集合中不同节点类型的方法。它展示了如何识别和处理元素节点与文本节点。脚本检查每个子节点的 nodeType 属性。根据节点是元素还是文本,会进行不同的处理。

node_types.vbs
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.loadXML "<data>Text content<item>Value</item></data>"

Set dataNode = xmlDoc.documentElement
For Each child In dataNode.childNodes
    Select Case child.nodeType
        Case 1: WScript.Echo "Element: " & child.nodeName
        Case 3: WScript.Echo "Text: " & child.nodeValue
    End Select
Next

Set xmlDoc = Nothing

脚本加载包含文本节点和元素节点的 XML。它检查每个子节点的 nodeType 属性。根据节点是元素还是文本,会进行不同的处理。这展示了类型感知的处理。

修改子节点

此示例演示了修改 childNodes 集合中的节点。它展示了如何更改节点内容和结构。脚本更新特定子节点的值。

modify_nodes.vbs
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.loadXML "<settings><option>Default</option></settings>"

Set settings = xmlDoc.documentElement
settings.childNodes(0).text = "Custom"
WScript.Echo "Modified option: " & settings.childNodes(0).text

Set xmlDoc = Nothing

脚本加载一个包含一个 option 元素的 XML 文档。它访问第一个子节点并修改其文本内容。然后通过显示更新后的值来验证更改。这展示了动态 XML 修改。

来源

XML DOM 文档

在本文中,我们探讨了 VBScript 中的 childNodes 属性,涵盖了它的用法和实际应用。从基本遍历到节点修改,这些示例演示了 XML 处理技术。通过这些知识,您可以有效地在 VBScript 中处理 XML 文档。

作者

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

列出所有 VBScript 教程