我有以下xml
var xml:XML = <test>
<node id='1'/>
<node id='2'/>
<node id='3'/>
<node id='4'/>
<node id='5'/>
</test>;
var xmlist:XMLList = xml.children();
for each (var node:XML in xmlist)
{
node.@newAttribute = "1";
}
我正在遍历每个节点并添加一个属性。如何在不循环的情况下执行此操作?我试过这个
xmlist.attributes().@newAttrib = "1";
但我收到错误“ TypeError:错误 #1089:不支持分配给具有多个项目的列表 ”。
最佳答案
自从提出这个问题以来已经过去了 2 周,但总会有更多的人需要帮助。
TypeError: Error #1089 是由 xml 中的多个对象导致的。
通常我通过类似这样的操作= xml.classes.(@id==1).students.(@no==2).@Grade="A";
错误是因为xml.classes中有多个学生,所以它试图返回所有学生。正如错误所说:“不支持分配给具有多个项目的列表。”您不能同时为多个对象分配一个值。
并且由于您将所有 s 添加到 XMLList 中,我不确定原因,因为我不使用 XMLList。我认为这是无用的。因此,如果您将代码更改为
var xml:XML = <test>
<node id='1'/>
<node id='2'/>
<node id='3'/>
<node id='4'/>
<node id='5'/>
</test>;
for each (var n:XML in xml)
{
n.@newAttribute = "1";
}
问题应该得到解决。
但我建议您使用“id”作为唯一键。然后您可以使用该唯一键来访问 XML 中的特定项目,例如
xml.node.(@id=="1").@newAttribute="1";
我希望这可以帮助你。小心
-奥赞
关于xml - 如何将属性添加到 XMLLIST 而不在 E4X 中循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15050156/