2010-01-22 97 views
0

我在一個ActionScript項目中使用URLLoader來讀取一些XML。然後我處理它,並將其放入文本字​​段中。一切都很美好。但是,我並不想讓XML在我的SWF外部。所以我這樣做:Actionscript剝離空白時它不應該

var internalXML:XML = <Content><P>It was in <City>Paris</City> that I first 
took a <Activity>walk in nature</Activity>.</P></Content> 

也就是說,我把相同的XML,直接在我的ActionScript其分配到一個XML對象實例。然後我運行完全相同的過程。但是這次,任何XML標籤內容和純文本之間的空格都被剝離了。

這樣上面的內容就會在文本框中顯示出來:「這是因爲我第一次在自然界中遇到了麻煩。」

在這兩種情況下,我都得到了XML.ignoreWhitespace = false。我也嘗試過XML.prettyPrinting = false。沒有幫助。

任何人都知道會發生什麼?

回答

1

可能是空白修剪發生在編譯時,而不是運行時(因此XML.IgnoreWhitespace無效)。

要有逐字保留到運行時的XML(就像是當你之前加載它),只是把它變成一個字符串:

var internalXML:XML = XML("<Content><P>It was in <City>Paris</City> that I first took a <Activity>walk in nature</Activity>.</P></Content>")

+0

指教,謝謝卡梅倫。在此期間,我發現了一個更簡單的解決方案,我想可以完成同樣的事情。我的主類中的處理程序中有XML.ignoreWhitespace = false。我將它移到了課程之外,並將其放在導入語句後面。現在它可以工作。 如果ignoreWhitespace是一個靜態屬性,爲什麼它聲明在哪裏?更一般地說,你怎麼知道在編譯時做了什麼以及在運行時完成了什麼? – David 2010-01-24 16:37:29

+0

因爲ignoreWhitespace是一個靜態屬性,所以它不應該在什麼地方設置(儘管有時在Flash中有一些奇怪的錯誤)。也許你認爲它的代碼沒有被執行?另外,我只是在猜測編譯時的事情。我實際上不知道內聯XML會發生什麼(我不完全確定它是否被記錄)。作爲一般的經驗法則,編譯時可以確定的事情通常是在那時完成的,因爲這樣做只需要一次,而不必在運行時完成。你必須閱讀文檔或嘗試找出肯定的東西。 – Cameron 2010-01-29 17:01:35