xmlファイルを保存してxmlファイルをロードするコードを作成しましたが、両方とも完全に実行されます。
ここでバグを見つけました。xmlファイルを保存してからロードし、最後に再保存すると、本当に奇妙なことが起こります
だから私はこのようなファイルを保存します
<partlist>
<item>
<series>51 Series</series>
<part>29251</part>
<size>29251-6-6</size>
<alt></alt>
<description>BSP Swiv FM, BN</description>
</item>
<item>
<series>51 Series</series>
<part>29251</part>
<size>29251-8-8</size>
<alt></alt>
<description>BSP Swiv FM, BN</description>
</item>
</partlist>
それをフレックスアプリにロードしてから再保存すると、次のようになります
<partlist>
<item>
<series>
<series>51 Series</series>
</series>
<part>
<part>29251</part>
</part>
<size>
<size>29251-6-6</size>
</size>
<alt>5654</alt>
<description>
<description>BSP Swiv FM, BN</description>
</description>
</item>
<item>
<series>
<series>51 Series</series>
</series>
<part>
<part>29251</part>
</part>
<size>
<size>29251-8-8</size>
</size>
<alt>
<alt/>
</alt>
<description>
<description>BSP Swiv FM, BN</description>
</description>
</item>
</partlist>
保存およびロードされた値はArraycollectionに保存されます。ここでは、ノードを作成する方法を説明します。
var SavelistXml:XML=new XML();
SavelistXml = <partlist/>;
for (var i:Number = 0; i < PartsArray.length; i++)
{
var obj:Object = Object(PrintListGrid[i]);
var newItemNode:XML= <item/>;
var newSeriesNode:XML = <series/>;
newSeriesNode.appendChild(obj.PartGroup);
var newPartNode:XML = <part/>;
newPartNode.appendChild(obj.PartType);
var newSizeNode:XML = <size/>;
newSizeNode.appendChild(obj.PartNumber);
var newAltPartNode:XML = <alt/>;
newAltPartNode.appendChild(obj.AltPartNum);
var newDescriptionNode:XML = <description/>;
newDescriptionNode.appendChild(obj.PartDesc);
newItemNode.appendChild(newSeriesNode);
newItemNode.appendChild(newPartNode);
newItemNode.appendChild(newSizeNode);
newItemNode.appendChild(newAltPartNode);
newItemNode.appendChild(newDescriptionNode);
SavelistXml.appendChild(newItemNode);
}
なぜそれが機能するのかわかりませんが、ロードされたファイルからデータが取得されるとすぐに、正しく機能しなくなります。たとえば、obj.PartGroupにアラートを送信すると、正しい値が得られますが、appendChild()は、自分自身のノード内に自分自身のノードを作成しています。