ZetCode

VBScript lastChild 属性

最后修改于 2025 年 4 月 9 日

VBScript 中的 lastChild 属性是文档对象模型 (DOM) 的一部分。它返回指定节点的最后一个子节点。此属性是只读的,通常用于 XML 文档遍历。它有助于高效地导航分层节点结构。

如果节点没有子节点,lastChild 返回 Nothing。它对于访问节点集合中的最后一个元素很有用。本教程通过实际示例涵盖 lastChild,以演示其在各种场景中的用法。

lastChild 属性概述

lastChild 属性属于 DOM Node 接口。它允许访问节点的最后一个子节点,而无需使用 childNodes 集合。在 VBScript 中处理 XML 文档时可以使用此属性。

主要功能包括直接访问最后一个节点以及对空节点返回 null。它适用于所有节点类型,包括元素节点和文本节点。理解此属性有助于创建高效的 XML 处理脚本。

基本 lastChild 访问

此示例演示了 lastChild 访问 XML 元素最后一个子节点的最简单用法。它展示了如何加载 XML 文档并导航到最后一个子节点。该示例输出节点名称和值。

basic_lastchild.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<root><item>First</item><item>Second</item><item>Last</item></root>"

Set lastNode = xmlDoc.documentElement.lastChild
WScript.Echo "Node name: " & lastNode.nodeName & ", Value: " & lastNode.text

Set xmlDoc = Nothing

脚本创建一个包含三个项目的 XML 文档。lastChild 访问最后一个“item”节点。输出显示节点名称(“item”)及其文本内容(“Last”)。这演示了基本的最后一个节点访问。

检查无子节点

此示例显示了如何处理节点没有子节点的情况。当没有子节点时,lastChild 返回 Nothing。脚本演示了在访问节点属性之前如何进行适当的 null 检查。

no_children.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<root><emptyNode/></root>"

Set emptyNode = xmlDoc.documentElement.firstChild
Set lastChild = emptyNode.lastChild

If lastChild Is Nothing Then
    WScript.Echo "No child nodes found"
Else
    WScript.Echo "Last child: " & lastChild.nodeName
End If

Set xmlDoc = Nothing

脚本检查 lastChild 是否为指向空节点的 Nothing。在访问节点属性时,避免运行时错误这一点很重要。该示例按预期输出“未找到子节点”。

访问嵌套的 lastChild

此示例演示了如何访问嵌套 XML 结构中的最后一个子节点。它展示了如何链接 lastChild 调用以导航深层结构。脚本检索最内层的最后一个节点。

nested_lastchild.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<root><group><item>A</item><item>B</item></group><group><item>C</item></group></root>"

' Get last group, then its last item
Set lastGroup = xmlDoc.documentElement.lastChild
Set lastItem = lastGroup.lastChild

WScript.Echo "Last item in last group: " & lastItem.text

Set xmlDoc = Nothing

脚本首先获取最后一个“group”节点,然后获取其最后一个“item”节点。这种两步导航在 XML 处理中很常见。输出显示“C”是最后一个组中的最后一个项目。

比较 firstChild 和 lastChild

此示例比较了 firstChildlastChild 属性。它演示了如何访问节点集合的两端。脚本显示了这些导航属性之间的区别。

first_vs_last.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<colors><color>Red</color><color>Green</color><color>Blue</color></colors>"

Set first = xmlDoc.documentElement.firstChild
Set last = xmlDoc.documentElement.lastChild

WScript.Echo "First color: " & first.text
WScript.Echo "Last color: " & last.text

Set xmlDoc = Nothing

脚本加载一个包含颜色值的 XML 文档。它同时输出第一个和最后一个颜色节点。这演示了如何使用这些属性访问节点集合的相对两端。

处理混合内容节点

此示例显示了 lastChild 在混合内容节点下的行为。XML 元素可以同时包含元素节点和文本节点。脚本演示了在这种情况下如何识别实际的最后一个子节点。

mixed_content.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<book>Introduction<chapter>1</chapter><chapter>2</chapter></book>"

Set lastChild = xmlDoc.documentElement.lastChild
WScript.Echo "Last child node type: " & lastChild.nodeType
WScript.Echo "Last child value: " & lastChild.text

Set xmlDoc = Nothing

XML 包含文本(“Introduction”)和元素节点。脚本显示 lastChild 正确返回最后一个 chapter 节点。节点类型 1 表示元素节点,并显示其文本值。

来源

XML DOM 文档

在本文中,我们探讨了 VBScript 中的 lastChild 属性,涵盖了它的用法和实际应用。从基本节点访问到复杂的嵌套结构,这些示例演示了高效的 XML 导航。通过这些知识,您可以增强 XML 处理脚本的节点遍历能力。

作者

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

列出所有 VBScript 教程