ZetCode

VBScript firstChild 属性

最后修改于 2025 年 4 月 9 日

VBScript 中的 firstChild 属性是文档对象模型 (DOM) 的一部分。它返回指定节点的第一个子节点。此属性通常在解析 XML 文档或遍历 DOM 树时使用。它提供了对父节点内嵌套元素或文本内容的访问。

如果节点没有子节点,firstChild 返回 Nothing。它可以返回不同的节点类型,包括元素、文本或注释。本教程通过实际示例介绍 firstChild,以演示其在各种场景下的用法。

firstChild 属性概述

firstChild 属性属于 DOM Node 接口。它提供对节点第一个子节点的只读访问。在 VBScript 中处理 XML 文档或 HTML DOM 时可以使用此属性。

主要功能包括 XML 中的自动空格文本节点检测。它经常与 nodeType 一起使用来确定子节点的类型。firstChild 对于递归 DOM 遍历算法至关重要。理解此属性对于 VBScript 中的 XML 处理至关重要。

访问简单的 XML 元素内容

此示例演示了使用 firstChild 访问 XML 元素中文本内容的基本用法。它展示了如何检索简单元素的 قيمة。XML 包含一个带有标题的单一 book 元素。

simple_xml.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<book><title>VBScript Programming</title></book>"

Set titleNode = xmlDoc.documentElement.firstChild
WScript.Echo titleNode.firstChild.nodeValue ' Output: VBScript Programming

Set xmlDoc = Nothing

该脚本加载一个简单的 XML 文档并访问 title 元素。book 元素的 firstChild 是 title 节点。通过 title 节点的 firstChild 访问文本内容。这演示了基本的 DOM 遍历。

处理空格文本节点

XML 文档通常包含用于格式化的空格。此示例显示了 firstChild 如何返回空格文本节点。它演示了如何检查节点类型以正确处理这种情况。

whitespace_nodes.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<catalog>" & vbCrLf & "  <book/>" & vbCrLf & "</catalog>"

Set firstNode = xmlDoc.documentElement.firstChild
If firstNode.nodeType = 3 Then ' Text node
    WScript.Echo "Whitespace node found"
Else
    WScript.Echo "Element node found"
End If

Set xmlDoc = Nothing

格式化的 XML 会创建空格文本节点。该脚本会检查第一个子节点的 nodeType。节点类型 3 表示文本节点,在这种情况下将是空格。此技术有助于处理真实世界的 XML 文档。

导航嵌套 XML 结构

此示例展示了如何使用 firstChild 导航嵌套的 XML 结构。它演示了通过链式调用 firstChild 来访问深层元素。XML 包含嵌套的书籍和作者信息。

nested_xml.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<library><book><author><name>John Doe</name></author></book></library>"

Set bookNode = xmlDoc.documentElement.firstChild
Set authorNode = bookNode.firstChild
Set nameNode = authorNode.firstChild

WScript.Echo nameNode.firstChild.nodeValue ' Output: John Doe

Set xmlDoc = Nothing

该脚本从 library 遍历到 book,再到 author,最后到 name 节点。每一步都使用 firstChild 向下深入一层。最后,它访问 name 元素的文本内容。这种模式在 XML 处理中很常见。

检查空节点

此示例演示了如何处理节点可能为空的情况。它在访问 firstChild 之前展示了正确的检查。XML 包含已填充和空元素。

empty_nodes.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<data><item>Value</item><item/></data>"

Set firstItem = xmlDoc.documentElement.firstChild
If Not firstItem.firstChild Is Nothing Then
    WScript.Echo firstItem.firstChild.nodeValue ' Output: Value
Else
    WScript.Echo "Empty node"
End If

Set secondItem = firstItem.nextSibling
If Not secondItem.firstChild Is Nothing Then
    WScript.Echo secondItem.firstChild.nodeValue
Else
    WScript.Echo "Empty node" ' Output: Empty node
End If

Set xmlDoc = Nothing

该脚本检查已填充和空的 item 元素。它在访问 firstChild 之前验证它不是 Nothing。这可以防止处理具有可选元素的 XML 时出现错误。该示例展示了防御性编程实践。

处理混合内容节点

XML 元素可以包含混合内容(文本和元素)。此示例展示了 firstChild 在混合内容下的行为。XML 包含一个同时包含文本和嵌入式元素的 description。

mixed_content.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<description>This is <em>important</em> text.</description>"

Set firstNode = xmlDoc.documentElement.firstChild
WScript.Echo "Node type: " & firstNode.nodeType ' Output: 3 (text node)
WScript.Echo "Content: " & firstNode.nodeValue ' Output: "This is "

Set xmlDoc = Nothing

description 元素同时包含文本和一个 em 元素。firstChild 返回初始文本节点。该脚本演示了如何在混合内容场景中识别和处理不同的节点类型。

来源

MSDN DOM Node 接口

在本文中,我们探讨了 VBScript 中的 firstChild 属性,涵盖了其用法和实际应用。从简单的 XML 遍历到处理空格和混合内容等复杂情况,这些示例展示了强大的 DOM 处理能力。有了这些知识,您就可以有效地在 VBScript 中导航和处理 XML 文档。

作者

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

列出所有 VBScript 教程