2014-03-30 69 views
0

我想從使用Microsoft XMLDOM的XML代碼創建一個Excel工作簿。我對此很新,並試圖研究這一點,但大多數答案都很難理解。這裏是我的XML的一個樣本:使用XMLDOM的vb腳本

<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日 Server1的

你能深入淺出的講解如何做到這一點?類似的代碼已經在運行不同的XML,我正在嘗試修改這個XML。

+0

那麼,如何獲得totalstoragespacegb,對象名和版本價值? – user3476979

回答

0

所有XPath表達式都失敗。

  • 「// collectionData/ASH/collectedFrom」 - collectedFrom沒有childnode,但屬性
  • 「// collectionData /磁盤組/對象」 - 磁盤組是ASH
  • 「// collectionData的孩子/ serverCell /對象」 - 對象的父對象被稱爲servercell(標記的情況下)和ASH

雖然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 
+0

非常感謝!這是完美的! – user3476979