AS3 E4X获取标签属性,与标签大写无关

时间:2012-06-24 12:40:20

标签: xml actionscript-3 flash air e4x

如何检索xml标记的属性,而不管属性名是否以大写字母书写?

目前我做的事情如下:

myXML = new XML(...);
if(myXML.@PROPERTYNAME.length())
    //...do something with myXML.@PROPERTYNAME...
if(myXML.@propertyname.length())
    //...do the same thing with myXML.@propertyname...

但我想有一种更简单的方法来捕捉属性,而不管它们的编写方式如何?怎么样?

2 个答案:

答案 0 :(得分:0)

最好的解决方案是为您的XML设置一个标准并坚持下去,以便您的属性一致地形成。如果这不是一个选项,那么你可以只进行多次搜索。不是最漂亮的解决方案,但可以胜任。

将属性名称作为String传递给以大写和小写搜索它的方法,并返回合并的结果。

    private function onLoaded(e:Event):void
    {
        xml = new XML(e.target.data);

        var list:XMLList = getNodesByAttribute("att");
        trace(list[1]);
    }

    private function getNodesByAttribute(attributeID:String):XMLList
    {
        var list:XMLList = (xml..@[attributeID.toLowerCase()]) + (xml..@[attributeID.toUpperCase()]);
        return list;
    }

如果你的属性不仅是全部大写和全部小写(ATTRIBUTE,属性和属性),那么这将变得混乱而且无济于事。

也许你可以使用regular expression进一步推动这个想法,但我担心我不擅长正则表达式(甚至不确定它是否可以在这种情况下使用)。

答案 1 :(得分:0)

为什么不使用reg exp:

const list:XMLList = xml.*.(@name.toString().search( new RegExp("hello") )!= -1);