Как получить все атрибуты на узле XML - PullRequest
1 голос
/ 28 ноября 2011

Как получить все атрибуты, которые существуют на узле XML? Например, у меня есть следующий XML:

<item id="100">
  <defaults width="10" height="100" post="true">
</item>

Я хотел бы получить имена и значения на узле по умолчанию.

Вот некоторый стартовый код:

if (item.defaults) {
    var attributes:Object = item.defaults.@*; // found in another post

    for each (var value:String in attributes) {
        trace("value "+value); // prints 10,100,true
    }
    for (var property:String in attributes) {
        trace("property "+property); // prints 0,1,2 - I need to know the names
    }
}

Я нашел ответ:

if (item.defaults) {
    attributes = item.defaults.attributes();
    attributesLength = attributes.length();
    defaults = {};

    for each (var attribute:Object in attributes) {
        propertyName = String(attribute.name());
        defaults[propertyName] = String(attribute);
    }
}

Ответы [ 4 ]

3 голосов
/ 28 ноября 2011

Самый короткий, который я мог придумать:

var defaults : Object = {};
if (item.defaults)
    for each (var att : XML in item.defaults.@*)
        defaults["" + att.name ()] = "" + att.valueOf ();
1 голос
/ 28 ноября 2011

Это работает:

var xml:XML = <item id="100"><defaults width="10" height="100" post="true"/></item>;

if (xml.defaults) 
{
    var attributes:XMLList = xml.defaults.attributes();

    for each (var prop:Object in attributes) 
    {
        trace(prop.name() + " = " + prop); 
    }
}
1 голос
/ 28 ноября 2011

Если вы хотите, вы можете конвертировать XML в Object

 public function xmlToObject(value:String):Object 
        {
                var xmlStr:String = value.toString();
                var xmlDoc:XMLDocument = new XMLDocument(xmlStr);
                var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);
                var resultObj:Object = decoder.decodeXML(xmlDoc);
                return resultObj;
            }

это функция, которая преобразует xml в Object, вам просто нужно передать XML в виде строки, и он вернет Object. Теперь вам легко получить данные из Object.

1 голос
/ 28 ноября 2011

Это должно помочь тебе:

for each (var k:XML in xml.defaults.@*)
{
    trace(k.name(), k.toXMLString());
}

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...