2016-03-20 67 views
-1

我需要一些幫助解碼我的XML文件。 它看起來像這樣:AS3解碼XML文件

<?xml version="1.0" encoding="UTF-8"?> 
<design> 
    <images> 
     <cell id="fill" file="cellImages/cellFill"/> 
     <cell id="top" file="cellImages/cellTop"/> 
     <cell id="topLeft" file="cellImages/cellTopLeft"/> 
     <cell id="topRight" file="cellImages/cellTopRight"/> 
     <cell id="bottom" file="cellImages/cellBottom"/> 
     <cell id="bottomLeft" file="cellImages/cellBottomLeft"/> 
     <cell id="bottomRight" file="cellImages/cellBottomRIght"/> 
    </images> 
</design> 

,這是我的代碼:

function xmlLoaded(event:Event):void 
    { 
     _structXML = XML(_structLoader.data); 
     trace("Data loaded." + _structXML); 

     var a:XML; 
     for each(a in _structXML.images.cell) 
     { 
      trace("test=" + a); 
     } 
    }  

所有的痕跡,它是 沒有數據從XML跟蹤的XML和7 「=測試」。

請幫助:)

回答

1

它的痕跡空字符串的所有a值,因爲它們是空的XML節點(沒有內容,但只有屬性)。使用[email protected]應該讓你的圖像的文件。

0

使用本:

trace("test id = " + a.attribute("id")); 
trace("test file = " + a.attribute("file")); 
0

您使用的"test=" + aa XML對象轉換爲字符串,和每個rules of XML toString()

  • 如果XML對象包含簡單內容, toString()返回XML對象的字符串內容,剝離出以下:開始 標籤,attribut es,名稱空間聲明和結束標記。

  • 如果XML對象具有複雜的內容,toString()返回表示整個XML對象的XML編碼的字符串,包括開始標籤 ,屬性,命名空間聲明,和結束標記。

因爲你<cell>節點具有「簡單」的內容(沒有子節點),它剔除了XML從輸出開始和結束標記,因爲<cell>節點包含什麼,你會得到一個空字符串,它不會在您的trace聲明中輸出任何可見的內容。

您可以使用toXMLString()獲取XML的完整字符串表示形式(即,無論節點內容是「簡單」還是「複雜」),都可以使用上面列出的第二種行爲。

trace("test=", a.toXMLString()); 

,或者你可以輸出的屬性:

trace([email protected], "=", [email protected]); 

(注:trace可以採取多個參數,你並不需要使用字符串連接與+