DOM +需要从XML bt VB脚本中删除元素

时间:2010-06-08 07:19:24

标签: dom vbscript

我有以下VB脚本,我想从名单中删除“NET2 ID”元素 如何删除NET2 ID元素,首先需要验证NET2是否已定义然后将其删除 THX

Set objXMLDoc = CreateObject("Microsoft.XMLDOM") 
objXMLDoc.async = False 
objXMLDoc.load("\\dir\d.xml") 
Set objRoot = objXMLDoc.documentElement 
Set objExNode = objRoot.removeChild(objRoot.childNodes.item(1)) 

XML文件:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<root version="3.0">
<names> 
<NET1 ID="10.10.10.1-10" />
<NET2 ID="10.10.10.1-10" />
</names>
</root>

1 个答案:

答案 0 :(得分:0)

您可以使用XPath确定节点是否存在,然后将其删除。像这样:

Set objXMLDoc = CreateObject("Microsoft.XMLDOM")  
objXMLDoc.async = False  
objXMLDoc.load("\\dir\d.xml")  
Set objRoot = objXMLDoc.documentElement  

If Not objRoot.selectSingleNode("./names/NET2") Is Nothing Then
    Set objExNode = objRoot.firstChild.removeChild(objRoot.firstChild.childNodes(1))  
End If

此外,元素NET2是“na​​mes”的子元素而不是“root”,它是documentElement,所以

Set objExNode = objRoot.removeChild(objRoot.childNodes.item(1)) 

成为

Set objExNode = objRoot.firstChild.removeChild(objRoot.firstChild.childNodes(1))  

编辑:要添加新节点,您将执行以下操作。 1表示NODE_ELEMENT

Set newNode = objXMLDoc.createNode(1, "NET3", "")
Set id = objXMLDoc.createAttribute("ID")
id.Value = "newIDValue"
newNode.attributes.setNamedItem(id)

objRoot.firstChild.appendChild(newNode)