我正在尝试从只读取1个XML文件的VBScript获取输出。 此XML文件位于C:\ scripts \ license.xml
<?xml version="1.0" encoding="utf-8"?>
<License xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XM LSchema-instance" xmlns="http://tempuri.org/License.xsd">
<Network>
<NetworkName>TestName</NetworkName>
<NetworkID>29</NetworkID>
<Region>1</Region>
<MaxDisplays>375</MaxDisplays>
<Expiry>2017-05-25</Expiry>
<Issued>2016-12-11</Issued>
<Communicator>ZZ007007007</Communicator>
我想使用VBScript for Zabbix监控xml文件中的Expiry标记。
Dim licDate
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
xmlDoc.load("C:\scripts\license.xml")
licDate = xmlDoc.getElementsByTagName("Expiry").item(0).text
itemInfo= licDate
MsgBox itemInfo
似乎无法使此代码正常运行。 我收到错误:需要对象:&#39; xmlDoc.getElementsByTagName(...)。item(...)&#39;
答案 0 :(得分:0)
作为mentioned in the remarks section for getElementsByTagName
on MSDN:
getElementsByTagName
方法模拟所提供参数与tagName
IXMLDOMElement
属性结果的匹配。执行时,它无法识别或支持名称空间。相反,您应该使用selectNodes
方法,这种方法在某些情况下更快,并且可以支持更复杂的搜索。
因此,您有两个选择 - 按文档说明,或手动循环遍历每个标记。
xmlDoc.setProperty "SelectionNamespaces", "xmlns:default='http://tempuri.org/License.xsd'"
Set expiry = xmlDoc.selectSingleNode("//default:Expiry")
Wscript.Echo expiry.text
2017年5月25日
Set nodeList = xmlDoc.getElementsByTagName("*")
For index = 0 To nodeList.Length - 1
Set element = nodeList.item(index)
If element.tagName = "Expiry" Then
Wscript.Echo element.text
End If
Next