2011-03-08 25 views
1

通常,需要使用Excel VBA解析從XML中匹配某些過濾條件的輸入。複雜性在於多級XML屬性及其配對結果,必須在Excel內依次填充。使用Excel VBA解析多級XML輸入

XML內容如下:

<Flow index="1" item="1" itemName="BB_150" ID="XXX"> 
     <Attribute name="FUNCTIONAL_X" dataType="Double" unit="" multiplier="" tag="YY">1</Attribute> 
     <Attribute name="X_LOC" dataType="String" unit="" multiplier="" tag="YY">2</Attribute> 
</Flow> 
<Flow index="2" item="2" itemName="CC_200" ID="WWW"> 
     <Attribute name="FUNCTIONAL_X" dataType="Double" unit="" multiplier="" tag="YY">15</Attribute> 
     <Attribute name="X_LOC" dataType="String" unit="" multiplier="" tag="YY">3</Attribute> 
</Flow> 
<Flow index="3" item="3" itemName="DD_200" ID="UUU"> 
     <Attribute name="FUNCTIONAL_X" dataType="Double" unit="" multiplier="" tag="YY">20</Attribute> 
     <Attribute name="X_LOC" dataType="String" unit="" multiplier="" tag="YY">1</Attribute> 
</Flow> 
<Flow index="4" item="4" itemName="EE_115" ID="SSS"> 
     <Attribute name="FUNCTIONAL_X" dataType="Double" unit="" multiplier="" tag="YY">33</Attribute> 
     <Attribute name="X_LOC" dataType="String" unit="" multiplier="" tag="YY">2</Attribute> 
</Flow> 
  1. 我怎麼只讀那些節點開始在XML屬性?
  2. 一旦選定了所有屬性的節點,就會開始在Excel VBA中進一步解析。首先,查找name = X_LOC並獲取值。
  3. 然後,查找名稱= FUNCTIONAL_X並檢索值。
  4. 現在,需要將所有這些值放入工作表'結果'的Excel列中。輸出的格式到Excel如下:

列標題名稱= X_LOC(排序並以升序顯示) 行結果(與柱A..then繼續下一column..etc開始)(開頭row1..then row2..etc)= FUNCTIONAL_X(每個配對X_LOC)

結果填充到Excel應該如下:

A B C D (Excel column) 

1 2 3 4 (X_LOC value) 

A1 B1 C1 D1 (Excel Row) 

1 15 20 33 (FUNCTIONAL_X value) 

注:如果有相同值的重複的X_LOC,什麼也不做。保留其FUNCTIONAL_X值的現有X_LOC &。不需要覆蓋。

回答

1

在Excel中操作XML數據令人難以置信地麻煩。我只會堅持VBA。如下所示創建一個XML文檔,對其進行編輯(使用XPath訪問所需的節點/元素)並保存。

Set xmlInventory = CreateObject("Msxml2.DOMDocument.6.0") 

文檔: http://msdn.microsoft.com/en-us/library/ms756987%28v=VS.85%29.aspx

的XPath教程: http://www.w3schools.com/xpath/default.asp

+0

感謝,Jean..will閱讀。創建excel宏是該任務的一個要求,這是該函數的一部分。到目前爲止,我已經設法加載XML(在論壇上的好人samaritan的幫助下),並過濾掉了我需要的那些屬性的值。但是,仍然出現錯誤將它們存儲到多維數組中,我試圖錨定X_LOC。 – LeenNew 2011-03-09 03:45:16

+0

聲明:昏暗的xmlDoc中作爲DOM文檔 昏暗節點的IXMLDOMNodeList 昏暗N作爲IXMLDOMNode 設置xmlDoc中=新的DOMDocument我創建設置節點= xmldoc.SelectNodes(「//屬性」) - 找到包含「屬性」的所有節點。有人可以幫助告訴我如何過濾標準的格式,如果我想要檢索節點之一,讓我們說從該節點列表調用節點的名稱= X_LOC。 – LeenNew 2011-03-10 00:08:51