Andy Jacobs
Andy Jacobs

Reputation: 15245

AS3: all key + values from XML attributes

<top>
    <item link="http://www.google.be"><![CDATA[test]]></item>
    <item link="http://www.google.be"><![CDATA[test]]></item>
    <item bold="true" link="http://www.google.be"><![CDATA[test]]></item>
</top>

I need to get all the attributes (both key and value)

for each ( var item : XML in data.item )
{
     trace(item.attributes().name());
}

gives this error

 TypeError: Error #1086: The name method only works on lists containing one item.

on the 3th item

Upvotes: 1

Views: 6384

Answers (2)

Karzin
Karzin

Reputation: 11

Use attr.valueOf() to get the value of that attribute

for each (var item : XML in data.items)
{
    for each (var attr : XML in item.attributes())
    {
        trace(attr.name()+":"+ attr.valueOf());
    }
}

Upvotes: 1

Justin Niessner
Justin Niessner

Reputation: 245399

The reason it's blowing up on the third item is that it has two attributes. You are using a shortcut that only gets the name if there is only one attribute. You need to change your code to the following:

for each (var item : XML in data.items)
{
    for each (var attr : XML in item.attributes())
    {
        trace(attr.name());
    }
}

Edit: Brackets after name were missing.

Upvotes: 4

Related Questions