0

我无法像为大子节点所做的那样向子节点添加属性。如何做到这一点。我曾经使用过

for each(var node:XML in valueXml.item)
{          
  for(var j:int=0; j<valueXml.length(); j++)
  {
     node.@name = valueXml.item[j].item[0].@name;
  }
}

从旧的xml:

<item>
  <item name="Subchild1"/>
  <item name="leaf1"/>
  <item name="leaf2"/>
</item>
<item>
  <item name="Subchild2"/>
  <item name="leaf3"/>
  <item name="leaf4"/>
</item>

我需要按如下方式添加:

 <root>
   <item name="Subchild1">
     <item name="Subchild1"/>
     <item name="leaf1"/>
     <item name="leaf2"/>
   </item>
 <item name="Subchild2">
     <item name="Subchild2"/>
     <item name="leaf3"/>
     <item name="leaf4"/>
 </item>

我想将每个子节点(“Subchild2”)的第一个子子节点([Subchild2,leaf3,leaf4])作为属性名称添加到该子节点。我该如何实现呢?

4

2 回答 2

1

到达要添加属性的节点后,您可以简单地为其第一个子节点的名称分配值。

var xml:XML = new XML(<root>
  <item>
    <item name="Subchild1"/>
    <item name="leaf1"/>
    <item name="leaf2"/>
  </item>
  <item>
    <item name="Subchild2"/>
    <item name="leaf3"/>
    <item name="leaf4"/>
  </item>
 </root>);


for each (var item:XML in xml.item) {
  item.@name = item.children()[0].@name;
}
于 2013-04-09T11:12:25.400 回答
0

试试这个:

//你的xml

        private var xml:XML = new XML(
            <root>
                <item>
                  <item name="Subchild1"/>
                  <item name="leaf1"/>
                  <item name="leaf2"/>
                </item>
                <item>
                  <item name="Subchild2"/>
                  <item name="leaf3"/>
                  <item name="leaf4"/>
                </item>
            </root>
        );

// 功能

    for each (var node:XML in xml.item)
    {
        var attrName:String = node.item[0].@name;
        node.@name = attrName;
    }

//跟踪给出:

<root>
  <item name="Subchild1">
    <item name="Subchild1"/>
    <item name="leaf1"/>
    <item name="leaf2"/>
  </item>
  <item name="Subchild2">
    <item name="Subchild2"/>
    <item name="leaf3"/>
    <item name="leaf4"/>
  </item>
</root>
于 2013-04-09T11:11:41.097 回答