4

私は次の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: 複数の項目を持つリストへの割り当てはサポートされていません」というエラーが表示されます。

4

2 に答える 2

1

この質問をしてから 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";

これがお役に立てば幸いです。気をつけて

-オザン

于 2014-03-07T17:26:33.827 に答える
0

エラーが示すように、サポートされていません。複数の要素にこの割り当てを行うことはできないため、xml を反復処理せずにこれを行う方法がわかりません。

楽しみのために、私はこれを試してみましたが、同じエラーが発生しました:xml.node.@newAttribute=1

これは、次のもののもう少し簡潔なバージョンです。

var xmlist:XMLList = xml.children();
xmlist.attributes().@newAttrib = "1";
于 2013-02-24T18:01:43.827 に答える