【问题标题】: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 进一步推动这个想法,但恐怕我不擅长正则表达式(甚至不确定它是否可以在这种情况下使用)。