DOM + необходимо удалить элемент из сценария XML bt VB - PullRequest
0 голосов
/ 08 июня 2010

У меня есть следующий скрипт 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 голосов
/ 08 июня 2010

Вы можете использовать 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 является дочерним по отношению к «names», а не «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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...