Xml Can';无法使RemoveChild函数在vbscript中工作
我一直在努力使用这种方法,这似乎相当简单Xml Can';无法使RemoveChild函数在vbscript中工作,xml,vbscript,Xml,Vbscript,我一直在努力使用这种方法,这似乎相当简单 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.documentEle
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 objNode = objXML.documentElement.selectSingleNode("/Servers/Server/Modules/Module/ModuleParameter[ServiceName='OldService']")
如果我将中间部分替换为:
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)
它告诉我“需要对象”。我在网上搜索过,我看到的所有示例都使用了这三段代码的变体,它们应该可以工作。我错过了什么?谢谢你的帮助 我终于明白了。事实上是这样的:
objXML.documentElement.removeChild(objNode)
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']")
很好