ZetCode

VBScript parseError 属性

最后修改于 2025 年 4 月 9 日

VBScript 中的 parseError 属性提供有关 XML 文档中语法错误的信息。它返回一个包含最后解析错误的详细信息的对象。该属性在处理 Microsoft XML DOM 对象时可用。它对于健壮的 XML 处理至关重要。

parseError 有助于识别行号、错误代码和错误描述。它使开发人员能够优雅地处理 XML 解析问题。本教程将通过实际示例介绍 parseError 以演示其用法。

parseError 属性概述

当发生 XML 解析错误时,parseError 属性将返回一个 IXMLDOMParseError 对象。它包含描述错误的多个属性。这些属性包括 errorCode、line、linepos 和 reason。

关键属性包括 errorCode(数值错误标识符)和 reason(文本描述)。line 和 linepos 属性精确定位错误位置。理解这些属性有助于创建健壮的 XML 处理脚本。

基本 parseError 检测

本示例演示了如何使用 parseError 属性检查 XML 解析错误。它展示了如何检测 XML 文档是否加载失败。脚本加载格式错误的 XML 并检查错误。

basic_parseerror.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<root><item>Test</item" ' Missing closing bracket

If xmlDoc.parseError.errorCode <> 0 Then
    WScript.Echo "Error Code: " & xmlDoc.parseError.errorCode
    WScript.Echo "Line: " & xmlDoc.parseError.line
    WScript.Echo "Reason: " & xmlDoc.parseError.reason
End If

Set xmlDoc = Nothing

脚本创建一个 XML DOM 对象并尝试加载格式错误的 XML。检查 parseError 属性的 errorCode 是否非零。显示包括行号和原因在内的错误详细信息。这是错误检测的基本模式。

检查特定错误条件

本示例展示了如何使用 parseError 属性检查特定错误条件。它演示了处理不同类型的 XML 解析错误。脚本测试格式是否正确错误。

specific_errors.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<root><item>Test</root>" ' Improper nesting

If xmlDoc.parseError.errorCode <> 0 Then
    Select Case xmlDoc.parseError.errorCode
        Case -1072896659
            WScript.Echo "XML not well-formed"
        Case -1072898022
            WScript.Echo "Invalid character in XML"
        Case Else
            WScript.Echo "Unknown XML error"
    End Select
End If

Set xmlDoc = Nothing

脚本尝试加载具有不正确嵌套的 XML。它会检查 errorCode 并为已知错误提供特定的消息。此方法允许进行有针对性的错误处理。case 结构使错误响应更加精确。

带错误处理的文件加载 XML

本示例演示了在从文件加载 XML 时使用 parseError。它展示了全面的文件操作错误处理。脚本同时检查文件访问和 XML 解析错误。

file_loading.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
success = xmlDoc.load("nonexistent.xml")

If Not success Then
    If xmlDoc.parseError.errorCode <> 0 Then
        WScript.Echo "XML Error: " & xmlDoc.parseError.reason
        WScript.Echo "File: " & xmlDoc.parseError.url
    Else
        WScript.Echo "Failed to load file (non-XML error)"
    End If
End If

Set xmlDoc = Nothing

脚本尝试加载不存在的 XML 文件。它同时检查加载返回值和 parseError 属性。这提供了完整的错误信息。该示例区分了 XML 解析错误和文件访问错误。

创建自定义错误消息

本示例展示了如何使用 parseError 属性创建用户友好的错误消息。它格式化错误信息以便于阅读。脚本组合了多个错误属性。

custom_errors.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.loadXML "<root><item>Test<item></root>"

If xmlDoc.parseError.errorCode <> 0 Then
    errorMsg = "XML Parsing Error:" & vbCrLf & _
               "Code: " & xmlDoc.parseError.errorCode & vbCrLf & _
               "Line " & xmlDoc.parseError.line & ", Pos " & xmlDoc.parseError.linepos & vbCrLf & _
               "Reason: " & xmlDoc.parseError.reason
    WScript.Echo errorMsg
End If

Set xmlDoc = Nothing

脚本加载格式错误的 XML 并构建详细的错误消息。它将 errorCode、行号和原因组合到一个格式化的字符串中。此方法可产生专业质量的错误报告。该消息更容易用户理解。

使用 DTD 验证 XML

本示例演示了如何使用 parseError 进行 DTD 验证错误。它展示了如何检测模式冲突。脚本加载具有无效元素的 XML。

dtd_validation.vbs
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.validateOnParse = True
xmlDoc.loadXML "<?xml version='1.0'?><!DOCTYPE root [<!ELEMENT root (item)*><!ELEMENT item (#PCDATA)>]><root><invalid/></root>"

If xmlDoc.parseError.errorCode <> 0 Then
    WScript.Echo "Validation Error: " & xmlDoc.parseError.reason
    WScript.Echo "Element: " & xmlDoc.parseError.srcText
End If

Set xmlDoc = Nothing

脚本启用 DTD 验证并加载具有无效元素的 XML。parseError 属性会捕获验证失败。srcText 属性显示了违规的元素。这对于调试模式合规性问题非常有用。

来源

XML DOM parseError 文档

在本文中,我们探讨了 VBScript 中的 parseError 属性,涵盖了它的用法和实际应用。从基本错误检测到高级验证场景,这些示例展示了有效的 XML 错误处理。有了这些知识,您就可以创建更健壮的 XML 处理脚本。

作者

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

列出所有 VBScript 教程