It's getting rather interesting :D

var xml:XML = <my_xml>
                <row id="a" parent="a" />
                <row id="b" parent="a" />
                <row id="c" parent="a" />
        
                <row id="d" parent="d" />
                <row id="e" parent="d" />
                <row id="f" parent="d" />

                <row id="g" parent="e" />
                <row id="h" parent="e" />
                <row id="i" parent="h" />
        </my_xml>;
                        
for each (var row:XML in xml.row){
        if(row.@id != row.@parent){
                xml..row.(@id == row.@parent).appendChild(row.copy());
                delete xml.row.(@id == row.@id)[0];
        }
}
                        
trace(xml);

// trace
<my_xml>
  <row id="a" parent="a">
    <row id="b" parent="a"/>
    <row id="c" parent="a"/>
  </row>
  <row id="d" parent="d">
    <row id="e" parent="d">
      <row id="g" parent="e"/>
      <row id="h" parent="e">
        <row id="i" parent="h"/>
      </row>
    </row>
    <row id="f" parent="d"/>
  </row>
</my_xml>

Kenneth Kawamoto
http://www.materiaprima.co.uk/

On 16/10/2011 13:25, Paul Andrews wrote:
On 16/10/2011 13:01, Paul Andrews wrote:
On 16/10/2011 10:06, Kenneth Kawamoto wrote:
Here's one way:

var xml:XML = <my_xml>
<row id="a" parent="a" />
<row id="b" parent="a" />
<row id="c" parent="a" />

<row id="d" parent="d" />
<row id="e" parent="d" />
<row id="f" parent="d" />
</my_xml>;

var ids:Array = ["a", "d"];
for each (var s:String in ids){
xml.row.(@id == s).children = xml.row.(@parent == s && @id != s);
while(xml.row.(@parent == s && @id != s).length()) delete
xml.row.(@parent == s && @id != s)[0];
}

trace(xml);

Thanks Kenneth. That works very nicely. I appreciate you taking the
time to do my little puzzle!

I made one change:

for each (var s:String in xml.row.(@id == @parent).@id){
xml.row.(@id == s).children = xml.row.(@parent == s && @id != s);
while(xml.row.(@parent == s && @id != s).length()) delete
xml.row.(@parent == s && @id != s)[0];
}

Thank you!

Ah, I went one stage further, which breaks the necessity for the parent
to have @id == @parent:

var xml:XML = <my_xml>
<row id="a" parent="a" />
<row id="b" parent="a" />
<row id="c" parent="a" />

<row id="d" parent="d" />
<row id="e" parent="d" />
<row id="f" parent="d" />

<row id="g" parent="e" />
<row id="h" parent="e" />
<row id="i" parent="h" />
</my_xml>;

Scratching my head again.. !



Paul
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to