ZetCode

VBScript XML 属性

最后修改于 2025 年 4 月 9 日

VBScript 中的 xml 属性是 Microsoft XML DOM(文档对象模型)的一部分。它将节点及其子孙的 XML 表示形式作为字符串返回。此属性可用于 IXMLDOMNode 对象及其子孙。它对于 VBScript 中的 XML 文档操作至关重要。

xml 提供序列化的 XML 内容,包括标签、属性和文本。它通常用于调试、日志记录和 XML 转换。本教程将通过实际示例介绍 xml 属性,以演示其在各种场景中的用法。

XML 属性概述

xml 属性返回一个字符串,其中包含节点及其所有子节点的 XML 标记。它适用于所有节点类型,包括元素、属性和文本节点。输出包括适当的 XML 格式,并在适用时进行缩进。

主要功能包括完整的 XML 序列化和特殊字符的正确编码。该属性是只读的,不能用于修改 XML 内容。了解此属性有助于 XML 文档的检查和操作。

基本 XML 文档序列化

此示例演示了使用 xml 属性序列化整个 XML 文档的最简单方法。它展示了如何加载 XML 字符串并输出其序列化形式。该示例使用 MSXML2.DOMDocument 来解析 XML。

basic_xml_property.vbs
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.loadXML "<books><book><title>VBScript Guide</title></book></books>"

WScript.Echo xmlDoc.xml

Set xmlDoc = Nothing

该脚本创建一个 XML DOM 文档并加载一个简单的 XML 字符串。xml 属性以字符串形式返回完整的 XML 标记。输出与输入 XML 匹配,但可能包含其他格式。这对于验证文档结构非常有用。

序列化特定节点

此示例展示了如何将 xml 属性用于特定节点而不是整个文档。它演示了 XML 片段的选择性序列化。该示例在序列化之前导航到子节点。

node_serialization.vbs
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.loadXML "<catalog><book id='101'><title>Advanced VBScript</title></book></catalog>"

Set bookNode = xmlDoc.selectSingleNode("//book")
WScript.Echo bookNode.xml

Set bookNode = Nothing
Set xmlDoc = Nothing

该脚本加载一个 XML 文档并选择一个特定的 book 节点。xml 属性仅序列化该节点及其子节点。输出包括 book 元素及其属性和子元素。这对于提取文档片段非常有用。

比较文档和元素 XML

此示例演示了将 xml 用于文档与用于单个元素之间的区别。它展示了输出如何根据节点类型而变化。该示例强调了 XML 声明的包含。

document_vs_element.vbs
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.loadXML "<?xml version='1.0'?><root><item>Test</item></root>"

WScript.Echo "Document XML:"
WScript.Echo xmlDoc.xml

WScript.Echo vbCrLf & "Element XML:"
Set root = xmlDoc.documentElement
WScript.Echo root.xml

Set root = Nothing
Set xmlDoc = Nothing

该脚本显示,文档级别的 xml 包含 XML 声明。元素级别的序列化会省略此声明。两种输出都包括正确的格式和完整的节点层次结构。当生成 XML 片段与完整文档时,此区别很重要。

处理特殊字符

此示例演示了 xml 属性如何自动处理 XML 内容中的特殊字符。它展示了对诸如 and (&) 和 < (<) 等保留字符的正确转义。该示例验证了正确的序列化。

special_characters.vbs
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.loadXML "<data><text>AT&T > Sprint & Verizon</text></data>"

WScript.Echo xmlDoc.xml

Set xmlDoc = Nothing

该脚本包含在原始 XML 中无效的特殊字符。xml 属性会在输出中正确转义这些字符。生成的 XML 是格式正确的,可以再次解析。这种自动转义简化了 XML 的生成。

从头开始创建 XML

此示例展示了如何以编程方式构建 XML 文档,然后使用 xml 属性对其进行序列化。它演示了 VBScript 中的动态 XML 生成。该示例创建元素和属性。

create_and_serialize.vbs
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
Set root = xmlDoc.createElement("inventory")
xmlDoc.appendChild root

Set item = xmlDoc.createElement("item")
item.setAttribute "id", "X205"
item.textContent = "Keyboard"
root.appendChild item

WScript.Echo xmlDoc.xml

Set item = Nothing
Set root = Nothing
Set xmlDoc = Nothing

该脚本从头开始创建一个新的 XML 文档,而无需加载现有的 XML。元素和属性是以编程方式添加的。xml 属性序列化了完整的生成结构。这种方法对于应用程序中的动态 XML 生成非常有用。

来源

MSXML DOMDocument 文档

在本文中,我们探讨了 VBScript 中的 xml 属性,涵盖了其用法和实际应用。从完整的文档序列化到特定节点的片段,这些示例展示了 XML 处理功能。有了这些知识,您就可以在 VBScript 应用程序中有效地处理 XML。

作者

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

列出所有 VBScript 教程