2012-08-16 74 views
0
我有我的節目一個非常怪異的行爲

,並嘗試很多東西,在這裏搜索了可能的答案,但沒有成功後,我決定,我會問這裏作爲一個新問題。 因此,這裏是我的問題:在Flash Builder E4X過​​濾怪異的行爲4.6

我使用的describeType()這樣描述了我的班級一個E4X XML對象。我班有一個元數據表]不帶參數:

[Table] 
class MyClass extends ORM 
{ 
    [...] 

調試時,XML對象是正確的:

trace([email protected][0]); 
// output "Table" 
trace(xmlDescription.metadata.(@name == "Table").length()); 
// output... 0!!!! 

還檢查XML對象我得到想要的節點正確的結構:

<metadata name="Table"/> 

在做我的研究時,我想起了關於XML.ignoreWhitespace屬性。我試圖將它設置爲false之前調用describeType(),但沒有任何更改

所以任何想法如何我可以得到這個元數據節點在一個XML類型變量,我應該邏輯上得到使用(但我得到空作爲結果) :

xmlDescription.metadata.(@name == "Table")[0] 

???

在此先感謝

PS:我使用Flash Builder 4.6

回答

0

哇,分享在Facebook上的問題不希望從那裏所有任何回答後,我得到了一個從舊同事的工作:

顯然有是出現在Flash Builder 4中的錯誤,我的問題是,在其範圍內。要「修復」它,你必須使用String類型的局部變量才能使其工作。 所以更換我的代碼如下圖所示使其工作:

// before: 
public function uniqueMetadata(metadataName : String) : ReflectionMetadata 
{ 
    var x : XML = xmlDescription.metadata.(@name == metadataName)[0]; 
    // x is null here 

// after 
public function uniqueMetadata(metadataName : String) : ReflectionMetadata 
{ 
    var s : String = metadataName, 
     x : XML = xmlDescription.metadata.(@name == s)[0]; 
    // x is not null and contain the desired node! 

所以,是的,怪異怪異的解決方法。我嚴重不明白這樣的一個錯誤是如何發生的?

不管怎麼說,現在它的工作,我正在尋找其他地方一樣,在我的代碼,我需要一個參數的值複製在本地做一些E4X濾波前的相同類型的可變洛爾