我正在尝试使用Microsoft XMLDOM从XML代码创建Excel工作簿。我对此非常陌生,并尝试过对此进行研究,但大多数答案都很难理解。以下是我的XML示例:
<scanmasterCollection>
<CustomerData>
<companyName></companyName>
<description></description>
</CustomerData>
<collectionData>
<ASH collectedFrom="testServer" version="3.03.00" devicename="tigger">
<servercell>
<object>
<objectname>Server1</objectname>
<objecttype>servercell</objecttype>
<objectsn>456</objectsn>
</object>
</servercell>
<diskgroup>
<object>
<objectid>456</objectid>
<objectname>\Disk Groups\100</objectname>
<objecttype>diskgroup</objecttype>
<totalstoragespacegb>4000</totalstoragespacegb>
</object>
</diskgroup>
</ASH>
</collectionData>
</scanmasterCollection>
我在vb脚本中使用它:
objSheet.Cells(iY,3).Value = objConfigXml.selectSingleNode
("//collectionData/ASH/collectedFrom").Attributes.getNamedItem("version").Text
objSheet.Cells(iY,4).Value = objConfigXml.selectSingleNode
("//collectionData/diskgroup/object").Attributes.getNamedItem
("totalstoragespacegb").Text
objSheet.Cells(iY,5).Value = objConfigXml.selectSingleNode
("//collectionData/serverCell/object").Attributes.getNamedItem("objectname").Text
我收到很多错误。我已经尝试了几个小时来改变上面的路径。
我需要返回以下值: 00年3月3日 4000 服务器1
你能用简单的语言解释一下如何做到这一点吗?类似的代码已经使用不同的XML运行,我正在尝试为此XML修改它。
答案 0 :(得分:0)
所有XPath表达式都失败了。
虽然ASH的属性为version
,但totalstoragespacegb
和objectname
都不是属性。
为了帮助您入门:经过测试的表达
WScript.Echo Join(Array( _
objMSXML.selectSingleNode("//collectionData/ASH").Attributes.getNamedItem("version").text _
, objMSXML.selectSingleNode("//collectionData/ASH/diskgroup/object/totalstoragespacegb").text _
, objMSXML.selectSingleNode("//collectionData/ASH/servercell/object/objectname").text _
), vbCrLf)
输出:
3.03.00
4000
Server1