2012-02-07 144 views
0

跟進關於Filtering XML based on multiple params - Flex的問題。基於參數的動態XML過濾

我試圖動態地創建查詢部分,以便參數和密鑰接管構建標準部分。只是爲了證明:

//building a dynamic query like this 
var q1:String = "descendants (\"E1") == \"111\")"; 
Alert.show("Query>>"+q1.toString());  // Output: descendants ("E1") == "111" 

var r2:XMLList = xmlData..*.(descendants ("E1") == "111"); //returns correct result 
var r1:XMLList = xmlData..*.(q1.toString()); // weird response, 
               // doesn't filter out anything 

註釋這裏Filtering XML based on multiple params - Flex說,括號內的表達不應該是一個字符串。同意。

那麼,有沒有其他的方法來篩選出多個參數的XML比使用 descendants(),目前沒有工作,因爲我們是動態生成搜索查詢,基於搜索的PARAMS?

任何指針/想法都會有很大的幫助。

回答

0

如何在循環中進行過濾?

var filters : Array = [ { key : "E1", value : "333" }, { key : "D1", value : "333" } ]; 

var searchItem : XMLList = xmlData.*; 
for each (var filter:Object in filters) 
    searchItem = searchItem.(descendants (filter.key) == filter.value); 

trace (searchItem); 
+0

是的,這是理解。但根據輸入參數,它可能是一個或多個,我試圖創建一個或多個參數作爲後代搜索的動態查詢。 – Bob 2012-02-07 23:32:46

+0

我改變了我的答案。請注意,xmlData。*返回根節點的子節點,而不是所有的子節點,否則該方法可能會一次又一次地以較小的塊返回相同的子樹。 – weltraumpirat 2012-02-07 23:53:06

+0

好的,這會起作用。我們在不同的後代迭代相同的列表。大。 – Bob 2012-02-08 00:45:13