0
我想在我的VBScript中檢查XML節點是否已經存在。如果這種情況不應該再次添加節點,則應該更新數據。有沒有辦法解決這個問題?這裏是我的代碼:
腳本執行時,將創建一個新節點,其中包含計算機數據。 (在添加新服務器或硬盤的情況下)。唯一缺少的是當節點已經存在時,它將被更新的數據更新。檢查XML節點是否已經存在
這裏是我的代碼:
XML:
<?xml version="1.0"?>
<SERVERSPEICHER>
<SERVER name="LANADMIN">
<FESTPLATTE id="1" disk="C:">
<SPEICHER>'450,6'</SPEICHER>
<FREIERSPEICHER>'356,5'</FREIERSPEICHER>
</FESTPLATTE><FESTPLATTE id="2" disk="Q:">
<SPEICHER>'13,7'</SPEICHER>
<FREIERSPEICHER>'3,4'</FREIERSPEICHER>
</FESTPLATTE>
</SERVER>
</SERVERSPEICHER>
的VBScript:
on Error Resume Next
Function GetElementFromXmlString(xmlString)
Dim doc
set doc = CreateObject("Microsoft.XMLDOM")
doc.async = False
doc.preserveWhiteSpace= False
doc.loadXML(xmlString)
Set GetElementFromXmlString = doc.documentElement
End Function
Dim xmlDoc, nNode, objNodeList, plot
dim serverNodeItem
dim diskNodeItem
dim diskID
y = 1
id = 1
set objNetwork = CreateObject("WScript.Network")
strComputerName = objNetwork.Computername
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputerName)
Set colDiskSettings = objWMIService.ExecQuery("Select * from Win32_LogicalDisk Where DriveType=3") ' Festplattendaten
Set xmlDOc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.setProperty "SelectionLanguage", "XPath"
xmlDoc.load "server.xml"
Set objRoot = xmlDoc.documentElement
If Err.Number = 0 Then
Dim xmlString
xmlString = "<SERVER name='"& strComputerName &"'>" & _
"</SERVER>"
Dim newServer
Set newServer = GetElementFromXmlString(xmlString)
objRoot.appendChild(newServer)
Set objServer = xmlDoc.selectsinglenode("//SERVER")
For Each objDisk In colDiskSettings
strDiskDeviceID = objDisk.DeviceID
strDiskSize = FormatNumber((objDisk.Size/(1024 * 1024 * 1024)),1,0,0,0)
strDiskFreeSpace = FormatNumber((objDisk.FreeSpace/(1024 * 1024 * 1024)),1,0,0,0)
Dim xmlDiskString
xmlDiskString = "<FESTPLATTE id='"& id &"' disk='"& strDiskDeviceID &"'>" & _
" <SPEICHER>'"& strDiskSize &"'</SPEICHER>" & _
" <FREIERSPEICHER>'"& strDiskFreeSpace &"'</FREIERSPEICHER>" & _
" </FESTPLATTE>"
If y = id Then
Dim newDisk
Set newDisk = GetElementFromXmlString(xmlDiskString)
objServer.appendChild(newDisk)
End If
id = id + 1
y = y + 1
Next
Else
Err.clear
End If
strResult = xmldoc.save("server.xml")
任何幫助將是很好!
感謝
哇,成功了!非常感謝你! – user3073688
@ user3073688也許您應該將其標記爲「已接受的答案」,以便具有相同問題的其他用戶也可以輕鬆找到該答案。 (並通過給予他虛擬互聯網點來向答案者表示您的讚賞!) – AutomatedChaos
Sry,我是新來的Stackoverflow ...我標記了它!感謝您的建議! – user3073688