如何使用VBScript读取XML文件中的子标签?

时间:2016-12-13 13:24:43

标签: xml vbscript

我正在尝试从只读取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;

1 个答案:

答案 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