我正在尝试使用Microsoft从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我犯了很多错误。我已经尝试了好几个小时来改变上面的路线。
我需要返回以下值:3.03.004000 Server1
你能简单地解释一下如何做到这一点吗?类似的代码已经用不同的XML运行了,我正在尝试为这个XML修改它。
发布于 2014-03-30 14:48:35
所有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
Server1https://stackoverflow.com/questions/22739147
复制相似问题