2014-01-23 57 views
0

我已經得到了具有沿着該線多節點的XML文件中的節點列表:我希望AS3/XML - 如何獲取有X值一定標籤

<animal name="dog"> 
    ... 
    <tag>mammal</tag> 
    <tag>brown</tag> 
</animal> 

tag節點用作某些動物的搜索功能的一部分。所以我可以整理所有哺乳動物的清單。

我一直在玩弄沿此線的東西:

myXML..tag=="mammal"myXML.*.tag=="mammal"

還試圖切換tag有一個屬性(如:<tag type="brown"/>),然後使用類似[email protected]=="brown"搜索但是,唉,這兩種方法都追溯到像「假」這樣無用的東西。

我並不特別想要循環遍歷每個節點來嘗試找到它,因爲我有太多需要經常搜索的東西。因此,如果有某種神奇的方式(可能不一定是XML),我可以輸入搜索值或標記,並且它會返回每個具有指定標記的[email protected]的列表或數組。

這是以前曾經問過的,但不是很像這樣,從來沒有真正回答過(我可以找到)。

回答

0

與這一個嘗試,

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 Slow。仔細閱讀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 ([email protected] == "mammal") 
        { 
         trace(tag.parent()[email protected]); 
         trace(tag.text()); 
        } 
       } 
+0

以上沒有仍能正常工作,但對你的建議,我會通過它來嘗試循環來代替。但到目前爲止,沒有運氣。 (animal.tag。@ type ==「mammal」)使用帶有 true'的標籤的XML,以及循環使用: (動物:myXML中的XML) {trace(animal。@ name); } } 但是,什麼也沒有顯示出來。沒有什麼痕跡。 – HalfBit

+0

首先對我來說罰款,更好的你可以把斷點,然後檢查resultList的值。問題在你的循環和動物xml在你的整個XML循環中總是執行一次。你能定義你的XML結構嗎?更新的答案可能會有用。 –

+0

美麗。公認。您的更新循環功能完美運作。謝謝你,你一直很有幫助,並提示。 – HalfBit