如何获取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);
}
}
答案 0 :(得分:3)
我能想到的最短的一个:
var defaults : Object = {};
if (item.defaults)
for each (var att : XML in item.defaults.@*)
defaults["" + att.name ()] = "" + att.valueOf ();
答案 1 :(得分:1)
这应该是你要去的:
for each (var k:XML in xml.defaults.@*)
{
trace(k.name(), k.toXMLString());
}
祝你好运!
答案 2 :(得分:1)
如果您愿意,可以将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获取数据。
答案 3 :(得分:1)
这有效:
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);
}
}