0

我在使用 E4X 挖掘我的 XML 文档时无法获得想要的结果。例如,我想要使用下面的 XML 查找所有具有d_type SW 的d_locations,然后创建一个包含代码和hfloor编号的所有 SW d_types 的列表 - 这是d_type之上的一个级别.

所以为了说明这个例子,我想输出一个这样的列表:

类型:SW

18楼:SW18.10N

15楼:SW15.W2

15楼:LB12

15楼:LB17

S2层:SWS2.3

如何使用 E4X 做到这一点?非常感谢!

马蒂纳比

<?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>
4

1 回答 1

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");
于 2012-04-28T00:59:48.530 回答