2010-06-08 67 views
0

我有以下VB腳本,我想從名稱列表中刪除「NET2 ID」元素 如何刪除NET2 ID元素,需要先驗證是否NET2定義然後將其刪除 THXDOM +需要從XML bt VB腳本中刪除元素

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> 

回答

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是 「名」,而不是 「根」 的孩子,這是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) 
+0

確定後,我刪除了NET2 ...如何新的兒童追加爲:到名字? – yael 2010-06-08 15:29:25

+0

您可以使用objXMLDoc的createNode方法,然後將其附加到名稱節點。請參閱這裏的文檔:http://msdn.microsoft.com/en-us/library/ms757901(v=VS.85).aspx – Garett 2010-06-08 15:39:16

+0

是的,但我不明白如何在名稱下創建它? 你能舉個例子嗎 THX – yael 2010-06-08 15:46:01