我目前正在尝试使用 VBScript 对 HTML 文件执行批量修改。为此,我使用 Microsoft.XMLDOM 对象。无法将我的 HTML 文件作为 XML 文档加载。经过一些实验,第一行的以下标签似乎是罪魁祸首:
<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)
如果删除此行,我的脚本将按预期工作。如果包含此行,则不会加载。不会出现任何特定的错误消息,但尝试从 XMLDOM 对象中获取任何内容都不会返回任何内容,这与对象尝试加载的文件不存在时的行为相同。
有谁知道为什么会发生这种情况以及如何解决这个问题?我无法从我的文件中删除此标签,因为它们是 HTML 文档,并且通常由另一个应用程序重新生成。
这是我的代码示例:
strFilePath = WScript.Arguments(0)
strTitlePrefix = WScript.Argument(1)
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.Async = False
objXMLDoc.load(strFilePath)
Set objDoc = objXMLDoc.documentElement
Set objNodes = objDoc.selectNodes("//title")
For Each thisNode in objNodes
OriginalTitle = thisNode.text
NewTitle = TitlePrefix & OriginalTitle
thisNode.text = NewTitle
Next
Run Code Online (Sandbox Code Playgroud)
它在这一行失败:
Set objNodes = objDoc.selectNodes("//title")
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
Microsoft VBScript runtime error: Object required: 'objDoc'
Run Code Online (Sandbox Code Playgroud)
如果我删除它尝试读取的文档顶部的标记,该代码就会执行我期望的操作,因此我知道问题在于该标记导致它认为该文件不是 XML 文档。