2013-10-23 85 views
0

所以,我想學習如何使用XML和PHP來檢索我的Flash文件的服務器信息。我已經得到它的工作。它提取信息並將其顯示在我的swf文件中,但它仍然具有XML節點。學習使用as3與XML和PHP,但卡住了

<itemm>example</itemm> 

也許有人能幫我弄清楚我做錯了什麼。我很確定我錯過了try塊中的某些東西。這裏是我的AS3代碼:

var txtFld:TextField = new TextField(); 
txtFld.width = 500; 
txtFld.height = 500; 
txtFld.multiline = txtFld.wordWrap = true; 
addChild(txtFld); 

var req:URLRequest = new URLRequest("test.php"); 

var urlLoader:URLLoader = new URLLoader(); 
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError, false, 0, true); 
urlLoader.addEventListener(Event.COMPLETE, onComplete, false, 0, true); 

urlLoader.load(req); 

function onIOError(evt:IOErrorEvent):void { 
    txtFld.text = "XML load error. \n" + evt.text; 
} 

function onComplete(evt:Event):void { 
    urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); 
    urlLoader.removeEventListener(Event.COMPLETE, onComplete); 

    try { 
     var loadedXML:XML = new XML(evt.target.data); 
     txtFld.text = loadedXML.itemm; 

} catch (err:Error) { 
    txtFld.text = "XML parse error:\n" + err.message; 
} 
} 

回答

3

嘗試改變路線:

txtFld.text = loadedXML.itemm; 

...這一個:

txtFld.text = loadedXML.itemm.text(); 

你必須記住,loadedXML.itemm將返回承受XMLList,而不是XML。那是因爲你用這個語句執行的是真的「給我所有類型爲itemm的節點」。

您可以看到的XMLList這裏的法文本()文檔: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/XMLList.html#text()

如果您loadedXML包含類型itemm的多個節點,文本()將返回XMLList的清單,文本內容項目。如果你想單獨處理文本內容,你可以這樣做:

for each(var itemm:XML in loadedXML.itemm.*) { 
    trace(itemm.text()); 
} 
+0

謝謝!這當然有效。輸出現在顯示它們,但不會執行換行符。我會在8分鐘內將它標記爲答案:) – micker

+0

我已經爲答案增加了一些概念。一定要審查它們! – Jotakun

+0

非常感謝Jotakun! – micker