2013-08-25 171 views
1

我有這樣的XML結構:AS3 XML刪除節點

<dbase> 
    <employee> 
     <Name>NAME</Name> 
     <Surname>SURNAME</Surname> 
     <Company>COMPANY</Company> 
     <Date>DATE</Date> 
     <Compare>1377390433625</Compare> 
    </employee> 
</dbase> 

我想知道如何尋找的比較值的刪除員工如果有匹配。

我會感謝任何反饋意見。

回答

4

也許下面的代碼會有用。假設XML結構將是這樣的:

 <dbase> 
     <employee> 
      <Name>NAME</Name> 
      <Surname>SURNAME</Surname> 
      <Company>COMPANY</Company> 
      <Date>DATE</Date> 
      <Compare>1377390433625</Compare> 
     </employee> 
     <employee> 
      <Name>WILL BE DELETED</Name> 
      <Surname>SURNAME</Surname> 
      <Company>COMPANY</Company> 
      <Date>DATE</Date> 
      <Compare>1234</Compare> 
     </employee> 
     <employee> 
      <Name>NAME</Name> 
      <Surname>SURNAME</Surname> 
      <Company>COMPANY</Company> 
      <Date>DATE</Date> 
      <Compare>34878937</Compare> 
     </employee>   
    </dbase> 

在接下來的代碼,我將刪除節點與Compare = 1234

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()"> 
    <mx:Script> 
     <![CDATA[ 

      public function init():void{ 
       delete myXML.employee.(elements('Compare') == '1234')[0]; 
       txt.text = myXML.toString(); 
      } 
     ]]> 
    </mx:Script> 
    <mx:XML id="myXML"> 
     <dbase> 
      <employee> 
       <Name>NAME</Name> 
       <Surname>SURNAME</Surname> 
       <Company>COMPANY</Company> 
       <Date>DATE</Date> 
       <Compare>1377390433625</Compare> 
      </employee> 
      <employee> 
       <Name>WILL BE DELETED</Name> 
       <Surname>SURNAME</Surname> 
       <Company>COMPANY</Company> 
       <Date>DATE</Date> 
       <Compare>1234</Compare> 
      </employee> 
      <employee> 
       <Name>NAME</Name> 
       <Surname>SURNAME</Surname> 
       <Company>COMPANY</Company> 
       <Date>DATE</Date> 
       <Compare>34878937</Compare> 
      </employee>   
     </dbase> 
    </mx:XML> 
    <mx:TextArea id="txt" width="400" height="400" /> 
</mx:Application> 

基本上這行刪除與該號碼作爲我匹配的節點想(在這種情況下,):

delete myXML.employee.(elements('Compare') == '1234')[0]; 

你可以試試這個這裏LINK。 我希望這會有用。

(編輯),2013年8月26日: 這裏LINK下載的項目。這個文件是一個.fxp文件,你可以導入此,請在文件 - >導入... - >Flash Builder項目.. - >選擇.fxp文件

+0

謝謝加斯東。它像一個魅力運行,但我是新來的XML,所以我不知道如何在Flash中實現它。 可以看到FLA?謝謝! – Sergio

+0

@Sergio,不客氣。我在flash builder 4.6中創建了這個示例,這是一個flex項目,通過這個ide我可以編譯並將actionscript代碼部署到swf文件中。爲了創建一個fla項目,我想你必須使用flash cs。如果您願意,我可以上傳您在我發給您的鏈接中看到的項目。 –

+0

非常感謝。我會盡量使它適應Flash CS5。無論如何,我想查看示例文件。歡呼 – Sergio

-2

轉換爲內部類,創建一個填充(data:XML)和toXML():XML方法。你很可能會有其他方法。

+0

嗨Discipol。感謝您的反饋。 – Sergio

+0

雖然上面的答案滿足我們的需要,但我相信我的經驗來自於使用Value Objects的XML技術。因此,我相信從長遠來看,它更有用。另外,請考慮切換到JSON。 AS3具有本機JSON解析器。 – Discipol

+0

我會檢查JSON。謝謝。 – Sergio