【问题标题】:AS3 E4X get tag properties independent of tag capitalizationAS3 E4X 获得独立于标签大小写的标签属性
【发布时间】:2012-06-26 00:13:12
【问题描述】:

无论属性名称是否用大写字母书写,如何检索 xml 标记的属性?

目前我正在做类似的事情:

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

但我想有一种更简单的方法可以独立于它们的编写方式来捕获属性?怎么样?

【问题讨论】:

标签: xml actionscript-3 flash air e4x


【解决方案1】:

为什么不使用正则表达式:

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

【讨论】:

    【解决方案2】:

    最好的解决方案是为您的 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、attribute AND Attribute),那么这将变得混乱且无济于事。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      相关资源
      最近更新 更多