0

如何独立于属性名称是否用大写字母来检索 xml 标记的属性?

目前我做类似的事情:

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

但我想有一种更简单的方法来捕获独立于它们如何编写的属性?如何?

4

2 回答 2

0

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

将属性名称作为 a 传递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;
    }

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

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

于 2012-06-26T14:26:11.143 回答
0

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

const list:XMLList = xml.*.(@name.toString().search( new RegExp("hello") )!= -1);
于 2013-05-19T11:04:43.967 回答