xml - 如何在不在 E4X 中循环的情况下将属性添加到 XMLLIST

标签 xml actionscript-3 actionscript flex4 xmllist

我有以下 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:错误#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 - 如何在不在 E4X 中循环的情况下将属性添加到 XMLLIST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15050156/

相关文章:

xml - 嵌套的 XML XSL for-each 循环

actionscript-3 - ActionScript 3 Newb : TextInput enter event?

flash - 没有重复的AS3递归对象扫描?

java - XML-FO 嵌套列表 block

c# - 如何使用c#代码从xml文件中提取部分xml代码

php - 如何在数组中查找某些 XML 项?

java - 属性名称中的 $ 在 ActionScript 3(或 JavaScript)中是什么意思

actionscript-3 - AS3 圆角文本字段

javascript - 检测客户端浏览器及其版本号的可靠方法是什么?

flash - AS3 NetstreamInfo 类返回错误值