Reputation: 15245
<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
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
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