我无法使用E4X获取我想要的结果来挖掘我的XML文档。例如,我想使用下面的XML来查找具有 d_type SW的所有 d_locations ,然后创建包含所有SW d_types的列表代码和 hfloor 号码 - 高于 d_type 的级别。
为了说明这个例子,我想输出一个这样的列表:
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 :(得分: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().@number, loc.@d_code );
}
}
称之为
find("SW");