2013-07-05 55 views
0

我想將xml導入到xml中並使用ActionScript 3讀取它。 單個導入的xml-File可以導入,但我有一個很大的問題使用它我想要的方式。將xml導入到xml中並使用actionscript讀取它3

所以我的第一個XML的文件看起來是這樣:

<!DOCTYPE doc [ 
<!ENTITY bonuses SYSTEM "bonuses.xml"> 
]>  
<mission> 
      ... 
      <wealth money="1000" /> 
      <bonuses>bonus</bonuses> 
      <bonuses> 
       <first>&bonuses;</first> 
       <second>&bonuses;</second> 
      </bonuses> 
     </mission> 

我的第二個文件看起來是這樣:

<?xml version="1.0" encoding="utf-8"?> 
<bananas> 
    <descr>Banana Description</descr> 
    <impact>You gain more gold!</impact> 
    <bonus>15</bonus> 
</bananas> 

我試圖用這個功能來訪問XML文件:

private function xmlLoaded(e:Event):void 
{ 
    _xml = new XML(e.target.data); 
    trace("XML LOADER: XML LOADED CORRECTLY"); 
// Correct Output: Bonus 
     trace("XML LOADER: BONUS 0: " + _xml.mission[0].bonuses[0]); 
// Incorrect Output: Nothing! 
    trace("XML LOADER: BONUS 1: " + _xml.mission[0].bonuses[1].first.descr); 
    _stage.dispatchEvent(new Event("completed")); 
} 

就像我說的這適用於第一個加載的XML文件,但不適用於導入。有沒有靈魂或者是動作的限制?

非常感謝!

問候 邁克爾

回答

0

好吧,代碼中有很多奇怪的東西。

1)您是否將兩個XML加載到同一個對象_xml?每個XML應該有不同的對象。當您執行以下代碼時,您將刪除_xml中的內容並添加新內容。 2)當然,即使您有2個XML對象,因爲它沒有正確地使用節點,您的第二條跟蹤也將無法正常工作......應該只是這一點。

trace(_xml.descr); 

如果您需要在2個XML組合成一個XML對象,你需要做的同時裝入個XML

1

首先,不使用XML,用JSON。 Actionscript 3具有原生JSON解析器,該解析器比默認的解析器XML更快。 JSON支持數組,在XML中的相同數據的大小更容易閱讀,大小的50%至66%。 Actionscript 3將JSON字符串轉換爲Object,其屬性可以消除像_xml.mission[0].bonuses[1].first.descr之類的內容。

一旦你切換到JSON,像你這樣的問題只能在蝴蝶的背面飛走閃爍,閃爍

如果您必須使用XML,那麼請自己設計一個XML to Object轉換器,您可以輕鬆地進行調試。將屬性轉換爲屬性,將子節點轉換爲包含子節點的數組等等。

+0

這是非常有爭議的事情,將取決於許多因素。例如手動編輯複雜的JSON文件可能是一個真正的痛苦(如果是這樣的話)。另一個因素是,在大多數情況下,性能和文件大小可以忽略不計。當然,如果你正在使用WS JSON中的數據,消費者更容易處理,但情況並非總是如此。你更喜歡它,很好,但不要說它是絕對的事實。 http://www.xml.com/pub/a/2007/11/28/introducing-e4x.html – Pier

+0

試圖埋葬腐爛的技術,就是這樣。兩者都是樹形結構,它很難編輯你描述的複雜性。兩者都存在驗證器。我同意e4x是有用的,但顯然不是在這種情況下。 – Discipol