当可能存在倍数时,根据元素值查找 XML 节点

find XML node based on element value when multiples may be present

var xmlData:XML = XML(<data>
    <item>
        <type atr="a">AAA</type>
        <type atr="b">BBB</type>
    </item>
    <item>
        <type atr="c">CCC</type>
    </item>
</data>);


trace(xmlData.item.(type=='AAA')); // does not work
trace(xmlData.item.(type=='CCC')); // works
trace(xmlData.item.type.(@atr=='a').parent()); // works
trace(xmlData.item.type.(@atr=='c').parent()); // works

当兄弟姐妹存在时,我似乎无法根据其值获取节点,除非我使用属性。

有没有办法在元素数量未知的情况下根据值检索项目,而无需手动循环或使用属性?

你可以使用 XMLList/contains:

trace(xmlData.item.(type.contains(<type atr="a">AAA</type>)))
// or
trace(xmlData.item.(type.contains("AAA")))

我找到了一种方法,主要是通过随机尝试...

xmlData.item.type.(child(0)=='BBB').parent();

xmlData.item.type.(children()=='BBB').parent();