2012-06-10 52 views
0

我有這個XML問題,這個問題是我今天煩擾的,而且我找不到解決方案,因爲我不知道如何對它進行描述。 我的XML文件是這樣的:AS3第一個元素的XML問題

<TEST> 
    <ITEM_ID>
    <ITEM_SIZE>Medium</ITEM_SIZE> 
    <ITEM_COLOR>Red</ITEM_COLOR> 
    </ITEM_ID> 
</TEST> 

一切工作正常(我能找到一個隨機元素,展示或刪除它),並能得到我想要的信息,但我不能myXML_XML訪問的唯一的事.ITEM_ID [0],它應該說「0123」。我什麼也沒得到,沒有錯誤,什麼都沒有當我檢查myXML_XML.ITEM_ID [0] .ITEM_SIZE(當放入String Var時,我得到「Medium」)。

我想也許XML被誤導,所以我試着用另外一個文件:

<TEST> 
     <ITEM_ID REF="0123"> 
     <ITEM_SIZE>Medium</ITEM_SIZE> 
     <ITEM_COLOR>Red</ITEM_COLOR> 
     </ITEM_ID> 
    </TEST> 

這給了我同樣的結果,檢查myXML_XML.ITEM_ID時,[0] .REF或myXML_XML.ITEM_ID [0] .REF.text

是否有足夠的啓發我的人?

回答

1

您的第一個XML模式似乎有點關閉,但仍然有效。您可能想嘗試節點的children()方法。

myXML_XML.ITEM_ID[0].children()[0] // This is the text node

在另一個例子,這實際上是更具可讀性,你應該使用@符號來訪問屬性

myXML_XML.ITEM_ID[0][email protected]

下面是一個完整的例子:

var test:XML = new XML(
    <foo> 
     <bar id="4444"> 
      efghi 
      <baz>1234</baz> 
      <quux>6789</quux> 
     </bar> 
     <bar id="4445"> 
      zxcv 
      <baz>4567</baz> 
      <quux>9876</quux> 
     </bar> 
    </foo> 
); 

trace(test.bar[0].children()[0]); // efghi 
trace(test.bar[1][email protected]); // 4445 
+0

啊非常感謝你,這正是我所期待的。 XML Schema有點奇怪的原因是通過使用這個,我可以設法刪除一個節點:delete myXML_XML.ITEM_ID [0] .parent()。children()[myXML_XML.ITEM_ID [0] .childIndex() } – Nik

+0

但我還需要記錄我刪除的內容(ITEM_ID [0]),這是我無法訪問的。在你的例子中,謝謝你讓我清楚@。 Nik – Nik

+0

很高興有用。 :) – erkmene