2012-04-27 44 views
0

我很難得到我想用E4X挖掘我的XML文檔的結果。對於exampleWhat我想做的事情,使用下面的XML,是找到所有d_locations是有d_type SW,然後創建所有的SW d_types包括代碼和hfloor號碼的清單 - 其中是高於d_type的水平。如何使用E4X創建包含子屬性父項的列表?

所以要說明的例子中,我要輸出像這樣的列表:

TYPE:SW

樓18:SW18.10N

15樓:SW15。 W2

樓15:LB12

15樓:LB17

樓S2:SWS2.3

我怎樣才能做到這一點使用E4X?非常感謝!

Mattynabib

<?xml version="1.0" encoding="UTF-8"?> 
<bldg> 

<hfloor number="18"> 
<d_location d_code="SW18.10N" d_type="SW" description="Ferbludgit thingamabob"> 
     <d_image>3e_pic1</d_image> 
    <d_image>3e_pic2</d_image> 
     <d_image>3e_pic3</d_image> 
     <d_image>3e_pic4</d_image> 
     <d_image>3e_pic5</d_image> 
     <d_video>3e_vid_1</d_video> 
     <d_video>3e_vid_2</d_video> 
     <d_video></d_video> 
</d_location> 
</hfloor> 

<hfloor number="15"> 
<d_location d_code="W1" d_type="PSW" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
</d_location> 
<d_location d_code="SW15.W2" d_type="SW" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
</d_location> 
<d_location d_code="W3" d_type="LB" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
</d_location> 
    <d_location d_code="LB12" d_type="SW" description="Screwed up whosamadingy"> 
     <d_image>media/lb15_12/LB-12 LOOKING NORTH.png</d_image> 
    <d_image>media/lb15_12/LB-12 LOOKING SOUTH.png</d_image> 
     <d_image>media/lb15_12/Pages from Level_15_Link_Beam_12.png</d_image> 
    <d_image>media/lb15_12/Pages from Level_15_Link_Beam_12-2.png</d_image> 
    <d_image>media/lb15_12/Post Demo from CITC018306365-2.png</d_image> 
     <d_image>media/lb15_12/Rebuilt from CITC018306365.png</d_image> 
    <d_image>media/lb15_12/WEI LB 12 level 15.png</d_image> 
     <d_video>Video 1</d_video> 
     <d_video>Video 2</d_video> 
     <d_video>Video 3</d_video> 
</d_location> 

<d_location d_code="LB17" d_type="SW" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
</d_location> 
<d_location d_code="LB8" d_type="EB" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
</d_location> 
<d_location d_code="W14" d_type="CB" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
</d_location> 
</hfloor> 


<hfloor number="S2"> 
<d_location d_code="W3" d_type="LB" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
</d_location> 
<d_location d_code="SWS2.3" d_type="SW" description="Whacked flogatron"> 
     <d_image>media/sw_s2_3/CITC000155966.png</d_image> 
    <d_image>media/sw_s2_3/CITC000155983.png</d_image> 
     <d_image>media/sw_s2_3/CITC000155996.png</d_image> 
     <d_image>media/sw_s2_3/CITC000156003.png</d_image> 
     <d_image>media/sw_s2_3/Screen shot 2012-04-19 at 5.54.42 PM.png</d_image> 
     <d_image>media/sw_s2_3/WEI SWS2.3.png</d_image> 
     <d_video>lbs.6e vid</d_video> 
     <d_video></d_video> 
     <d_video></d_video> 
</d_location> 
<d_location d_code="LB17" d_type="ES" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
</d_location> 
<d_location d_code="LB8" d_type="SW" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
</d_location> 
</hfloor> 

</bldg> 

回答

0

你需要做的是兩個過程。首先收集d_location節點。這將返回一個XMLList。然後,對於它的每個元素,您會找到父級,它是包含所需樓層代碼的h_floor節點。

var xml:XML = <bldg><hfloor number="18"> 
    <d_location d_code="SW18.10N" d_type="SW" description="Ferbludgit thingamabob"> 
     <d_image>3e_pic1</d_image> 
     <d_image>3e_pic2</d_image> 
     <d_image>3e_pic3</d_image> 
     <d_image>3e_pic4</d_image> 
     <d_image>3e_pic5</d_image> 
     <d_video>3e_vid_1</d_video> 
     <d_video>3e_vid_2</d_video> 
     <d_video></d_video> 
    </d_location> 
</hfloor> 

<hfloor number="15"> 
    <d_location d_code="W1" d_type="PSW" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
    </d_location> 
    <d_location d_code="SW15.W2" d_type="SW" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
    </d_location> 
    <d_location d_code="W3" d_type="LB" description="Broken fetzer valve"> 
      <d_image>3s_pic1</d_image> 
    </d_location> 
    <d_location d_code="LB12" d_type="SW" description="Screwed up whosamadingy"> 
     <d_image>media/lb15_12/LB-12 LOOKING NORTH.png</d_image> 
     <d_image>media/lb15_12/LB-12 LOOKING SOUTH.png</d_image> 
     <d_image>media/lb15_12/Pages from Level_15_Link_Beam_12.png</d_image> 
     <d_image>media/lb15_12/Pages from Level_15_Link_Beam_12-2.png</d_image> 
     <d_image>media/lb15_12/Post Demo from CITC018306365-2.png</d_image> 
     <d_image>media/lb15_12/Rebuilt from CITC018306365.png</d_image> 
     <d_image>media/lb15_12/WEI LB 12 level 15.png</d_image> 
     <d_video>Video 1</d_video> 
     <d_video>Video 2</d_video> 
     <d_video>Video 3</d_video> 
    </d_location> 

    <d_location d_code="LB17" d_type="SW" description="Broken fetzer valve"> 
      <d_image>3s_pic1</d_image> 
    </d_location> 

    <d_location d_code="LB8" d_type="EB" description="Broken fetzer valve"> 
      <d_image>3s_pic1</d_image> 
    </d_location> 
    <d_location d_code="W14" d_type="CB" description="Broken fetzer valve"> 
      <d_image>3s_pic1</d_image> 
    </d_location> 
</hfloor> 


<hfloor number="S2"> 
    <d_location d_code="W3" d_type="LB" description="Broken fetzer valve"> 
      <d_image>3s_pic1</d_image> 
    </d_location> 
    <d_location d_code="SWS2.3" d_type="SW" description="Whacked flogatron"> 
     <d_image>media/sw_s2_3/CITC000155966.png</d_image> 
     <d_image>media/sw_s2_3/CITC000155983.png</d_image> 
     <d_image>media/sw_s2_3/CITC000155996.png</d_image> 
     <d_image>media/sw_s2_3/CITC000156003.png</d_image> 
     <d_image>media/sw_s2_3/Screen shot 2012-04-19 at 5.54.42 PM.png</d_image> 
     <d_image>media/sw_s2_3/WEI SWS2.3.png</d_image> 
     <d_video>lbs.6e vid</d_video> 
     <d_video></d_video> 
     <d_video></d_video> 
    </d_location> 
    <d_location d_code="LB17" d_type="ES" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
    </d_location> 
    <d_location d_code="LB8" d_type="SW" description="Broken fetzer valve"> 
     <d_image>3s_pic1</d_image> 
    </d_location> 
</hfloor> 

;

然後創建這個函數會做兩個步驟:

function find(type:String) { 
    var D_LOCATIONS:XMLList = (xml..d_location.(@d_type==type)); 
    for each (var loc:XML in D_LOCATIONS) { 
     trace("Floor:", loc.parent()[email protected], [email protected]_code);   
    } 
} 

這樣稱呼它

find("SW"); 
+0

謝謝 - 非常有幫助! – Mattynabib 2012-05-02 19:35:25

相關問題