Не удается заставить функцию RemoveChild работать в vbscript - PullRequest
0 голосов
/ 25 февраля 2011

Я боролся с этим методом, что кажется довольно простым.

Dim objXML, objNode, objDeleted, objRoot
Set objXML = CreateObject("MSXML2.DOMDocument.4.0")
Set objNode = CreateObject("MSXML2.DOMDocument.4.0")
objXML.async = false
objXML.Load("C:\Config.xml")

Set objNode = objXML.documentElement.selectSingleNode("/Servers/Server/Modules/Module/ModuleParameter[ServiceName='OldService']")
objXML.documentElement.removeChild(objNode)

objXML.Save ("C:\Config.xml")
Set objXML = nothing
Set objRoot = nothing
Set objDeleted = nothing
Set objNode = nothing

Это дает мне ошибку "Недопустимый вызов процедуры или аргумент" для строки:

objXML.documentElement.removeChild(objNode)

Если заменить среднюю часть на:

Set objRoot = objXML.documentElement
Set objNode = objXML.documentElement.selectSingleNode("/Servers/Server/Modules/Module/ModuleParameter[ServiceName='OldService']")
objRoot.removeChild(objNode)

Это говорит о том же.Наконец, если я просто попробую:

Set objNode = objXML.documentElement.selectSingleNode("/Servers/Server/Modules/Module/ModuleParameter[ServiceName='OldService']")
objNode.parentNode.removeChild(objNode)

Это говорит мне "объект требуется".Я искал в Интернете, и во всех примерах, которые я вижу, используются варианты этих трех частей кода, и они предположительно работают.Что мне здесь не хватает?Спасибо за любую помощь!

1 Ответ

1 голос
/ 25 февраля 2011

Я наконец понял это.На самом деле это была строка:

Set objNode = objXML.documentElement.selectSingleNode("/Servers/Server/Modules/Module/ModuleParameter[ServiceName='OldService']")

Это было причиной проблемы.Мне не хватало одного уровня в дереве, а также пришлось добавить еще один спецификатор, чтобы получить именно то, что я хотел.Таким образом:

Set objNode = objXML.documentElement.selectSingleNode("//Servers/Server/Modules/Module[ModuleName='Services']/ModuleParameters/ModuleParameter[ServiceName='OldService']")

Работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...