无法为子节点添加属性,就像你对大子节点所做的那样。如何做到这一点。我曾经使用过
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])作为该子节点的属性名称添加。我如何实现这一点?
答案 0 :(得分: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;
}
答案 1 :(得分: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;
}
// trace给出:
<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>