2013-04-08 68 views
0

我需要一个属性在XML dynamically.My XML添加到所有节点如下:如何在Flex中动态添加属性到xml节点?

<root> 
    <item> 
     <item>Americas</item> 
     <item>Canada</item> 
     <item>Ottawa</item> 
     <item>Category 1</item> 
     <item>Product 01</item> 
     <item>4171.132339235787</item> 
     <item>4181.132339235787</item> 
     </item> 
    </root> 

对,我需要一个名为“名”的属性在上面的XML添加到每个节点:

<root> 
<item name=""> 
    <item name="Americas"/> 
    <item name="Canada"/> 
    <item name="Ottawa"/> 
    <item name="Category 1"/> 
    <item name="Product 01"/> 
    <item name="4171.132339235787"/> 
    <item name="4181.132339235787"/> 
</item> 
</root> 

这怎么能在Flex XML中实现?

回答

1

您需要一个名为label的属性?但是你的最终XML没有任何这样的属性。不管怎么说,你可以使用下面的“名称”属性添加到XML的每个子元素:

<mx:Script> 
      <![CDATA[ 
       private var newLoad:URLLoader; 
       private var link:String = "xl.xml"; 
       private var req:URLRequest = new URLRequest(link); 
       loadU();//Place this call in the creation complete handler of the Application's CreationComplete Event 
       private function load(e:Event):void 
       { 
        var xm:XML = XML(e.target.data); 
        for each(var node:XML in xm.item.item) 
        { 
         [email protected] = node; 
        } 
        var file:FileReference = new FileReference(); 
        file.save(xm,"x1.xml");//Save the output file 
       } 
       private function loadU():void 
       { 
        newLoad = new URLLoader(); 
        newLoad.addEventListener(Event.COMPLETE,load); 
        newLoad.load(req); 
       } 
      ]]> 
     </mx:Script> 

让我知道这是你想要的。

+0

谢谢你的回答。是的,这是我需要的。但有一点是,“根”标签后面的直接节点没有属性“名称”。如何在该级别获得它? – Flexiflex 2013-04-08 10:31:14

+0

我想你可以使用一个单独的“for”循环来添加属性,并且在那个循环中你可以遍历到第一个节点,使用下面的代码: (var node:XML in xm.item)//遍历到第一个子节点 而不是 (var节点:xm.item.item中的XML)//遍历到根节点的第一个孙子 希望它有帮助! – diganta 2013-04-08 11:27:08

+0

我无法像添加子节点那样为子节点添加属性。如何做到这一点。我为每个(var节点:xm.item中的XML)使用了 {var j: int = 0; j Flexiflex 2013-04-09 09:21:59