문제

I'm having trouble getting the results I want using E4X to dig into my XML document. For exampleWhat I want to do, using the XML below, is find all of the d_locations that have the d_type SW, and then create a list of all the SW d_types that includes the code and the hfloor number - which is a level above the d_type.

So to illustrate the example, I want to output a list like this:

TYPE: SW

Floor 18: SW18.10N

Floor 15: SW15.W2

Floor 15: LB12

Floor 15: LB17

Floor S2: SWS2.3

How can I do that using E4X? Thanks so much!

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>
도움이 되었습니까?

해결책

You need to do it in two process. First collecting the d_location nodes. This will return an XMLList. Then for each element of it, you find the parent, which is h_floor nodes which contains the floor code that you want.

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>

;

Then you create this function which will do the two step process:

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 );        
    }
}

Call it like

find("SW");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top