В настоящее время я пытаюсь использовать VBScript для выполнения пакетных изменений файлов HTML. Для этого я использую объект Microsoft.XMLDOM. Не удается загрузить мой HTML-файл в виде XML-документа. После некоторых экспериментов выяснилось, что виновником является следующий тег, находящийся в первой строке:
<!DOCTYPE html>
Если эту строку убрать, мой скрипт будет работать как положено. Если эта строка включена, она не будет загружаться. Никакого конкретного сообщения об ошибке не появляется, но попытка получить что-либо из объекта 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
Это терпит неудачу в этой строке:
Set objNodes = objDoc.selectNodes("//title")
Это сообщение об ошибке:
Microsoft VBScript runtime error: Object required: 'objDoc'
Код делает то, что я ожидаю, если я удалю тег в верхней части документа, который он пытается прочитать, поэтому я знаю, что проблема в том, что этот тег заставляет его думать, что файл не является XML-документом.
Microsoft.XMLDOM
устарел, используйте вместо негоMsxml2.DOMDocument.6.0
. Для получения дополнительной помощи с вашим кодом: пожалуйста, покажите свой код. - person Ansgar Wiechers   schedule 05.07.2018