我有一个XML文件,其中包含许多节点:
<animal name="dog">
...
<tag>mammal</tag>
<tag>brown</tag>
</animal>
我希望将tag
节点用作某些动物的搜索功能的一部分。因此,我可以整理所有哺乳动物的清单。
我一直在玩一些类似的事情:
myXML..tag=="mammal"
或者 myXML.*.tag=="mammal"
还尝试切换tag
为具有属性(例如:),<tag type="brown"/>
然后使用诸如之类的东西进行搜索myXML..tag.@type=="brown"
,但是,这两种方法都可以追溯到诸如“ false”之类的无用之物。
我并不是特别想遍历每个节点来尝试找到它,因为我有太多需要经常搜索的内容。因此,如果有一种神奇的方式(不一定是XML),我可以输入搜索值或标记,它会返回animal.@name
具有指定标记的每个变量的列表或数组。
以前曾有人问过这个问题,但并不是完全这样,从来没有真正回答过(我能找到)。
试试这个,
var xml:XML = <animal name="dog">
<tag type="mammal">mam</tag>
<tag type="brown">br</tag>
<tag type="black">bl</tag>
<tag type="black">black</tag>
</animal>;
var attr:String = "black";
var val:String = "b";
var resultList:XMLList = xml..tag.(@type == attr).(toString().indexOf(val)>-1);
o / p:
<tag type="black">
bl
</tag>
<tag type="black">
black
</tag>
无论如何,您始终使用循环来获得更好的性能。e4X慢。仔细阅读15分。
根据您的评论:
var myXML:XML = <animal name="dog">
<tag type="mammal">true</tag>
<tag type="brown">true</tag>
<tag type="black">true</tag>
</animal>;
for each(var tag:XML in myXML..tag) //no matter of depth Note here
{
if (tag.@type == "mammal")
{
trace(tag.parent().@name);
trace(tag.text());
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句