我已经创建了一些代码来保存一个 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>
当我将它加载到我的 flex 应用程序中然后重新保存时,它看起来像这样
<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() 正在它自身的节点内创建它自身的节点