感谢您的真棒论坛它确实是一个丰富的知识,并希望在寻找一个解决方案,我可以帮助别人。
我不知道如果某种灵魂可以帮助我的建议如何或可能指向我朝着正确的方向与代码示例解析这里显示的XML代码。 我一直在寻找所有网站上的一个VBScript的例子,但真的很挣扎着找到一个解决问题。
大部分网络上的示例显示了如何提取特定的标签或文本中的节点或子节点相匹配,并且不太热的解释引用我有兴趣在此代码的部分。
我已经有Python代码工作正常,但VBScript中有我难住了:-(
所述xmlDoc中定义vApp的环境设置,我感兴趣的部分是: oe:key
和oe:value
下对于每个节点的<PropertySection>
我需要有钥匙,并存储在一个文本文件中包含的条目值
bootflag=a clusetername=cluster test
等这里是XML文档:
<Environment xmlns="http://schemas.dmtf.org/ovf/environment/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oe="http://schemas.dmtf.org/ovf/environment/1" xmlns:ve="http://www.vmware.com/schema/ovfenv" oe:id="" ve:vCenterId="vm-167">
<PlatformSection>
<Kind>VMware ESXi</Kind>
<Version>5.5.0</Version>
<Vendor>VMware, Inc.</Vendor>
<Locale>en</Locale>
</PlatformSection>
<PropertySection>
<Property oe:key="bootflag" oe:value="A"/>
<Property oe:key="clustername" oe:value="custer test"/>
<Property oe:key="datacenter_name" oe:value="datacenter test"/>
<Property oe:key="dns1" oe:value="192.168.1.198"/>
<Property oe:key="domain" oe:value="zen.com"/>
<Property oe:key="gateway" oe:value="192.168.1.1"/>
<Property oe:key="hostname" oe:value="rambo1"/>
<Property oe:key="ip" oe:value="192.168.1.104"/>
<Property oe:key="netmask" oe:value="255.255.255.0"/>
<Property oe:key="vcenter_password" oe:value="vpass"/>
<Property oe:key="vcenterip" oe:value="1.2.3.4"/>
<Property oe:key="vcenteruser" oe:value="vcenteruser"/>
</PropertySection>
<ve:EthernetAdapterSection>
<ve:Adapter ve:mac="00:50:56:88:62:8a" ve:network="VM Network" ve:unitNumber="7"/>
<ve:Adapter ve:mac="00:50:56:88:46:25" ve:network="VM Network" ve:unitNumber="8"/>
<ve:Adapter ve:mac="00:50:56:88:31:59" ve:network="VM Network" ve:unitNumber="9"/>
<ve:Adapter ve:mac="00:50:56:88:5e:00" ve:network="VM Network" ve:unitNumber="10"/>
</ve:EthernetAdapterSection>
</Environment>
我真的很感激任何帮助。
编辑:基于下面我的答复试过这段代码,但我敢肯定,我与在节点信息填充走错了,特别是“OE:键”和“OE:值”。
请从下面的更新代码:
Set objDoc = CreateObject("MSXML.DOMDocument")
objDoc.Load ("c:\Temp\ovfenv.xml")
' Iterate over all elements contained in the <root> element:
Set objRoot = objDoc.documentElement
s = ""
t = ""
For Each child in objRoot.childNodes
s = s & child.getAttribute("oe:key") & " "
t = t & child.getAttribute("oe:value") & " "
Next
MsgBox s
MsgBox t
' Find a particular element using XPath:
Set objNode = objDoc.selectSingleNode("/PropertySection/Property[@oe:key='bootflag']")
MsgBox objNode.getAttribute("oe:value")