这里有很多关于将XML与Java合并的帖子,但我似乎找不到对同一任务的ActionScript的任何引用。
我有一组需要加载的XML文件。我希望它们在内存中排序成一个XML对象。
例如,假设这些是我的XML文件:
文件1
<xml>
<type name="1" group="a">
<unit> value1 </unit>
</type>
<type name="1" group="b">
<unit> value2 </unit>
</type>
<type name="2" group="a">
<unit> value3 </unit>
</type>
</xml>
文件2
<xml>
<type name="1" group="a">
<unit> value4 </unit>
</type>
<type name="1" group="b">
<unit> value5 </unit>
</type>
<type name="2" group="a">
<unit> value6 </unit>
</type>
<type name="3" group="a">
<unit> value7 </unit>
</type>
</xml>
合并
<xml>
<type name="1" group="a">
<unit> value1 </unit>
<unit> value4 </unit>
</type>
<type name="1" group="b">
<unit> value2 </unit>
<unit> value5 </unit>
</type>
<type name="2" group="a">
<unit> value3 </unit>
<unit> value6 </unit>
</type>
<type name="3" group="a">
<unit> value7 </unit>
</type>
</xml>
在此示例中,合并了两个文件,并将单元放在类似的类型名称和组中。
排序优先级:类型名称&gt;类型组&gt;单位价值
我希望这很清楚。请询问是否需要进一步澄清。
答案 0 :(得分:2)
这适用于给定的例子。
var t1:XML, t2:XML;
var merged:XML = new XML(file1.toXMLString())
for each(t1 in merged.type)
for each(t2 in file2.type.(@name == t1.@name && @group == t1.@group))
t1.appendChild(t2.unit.toXMLString());
for each(t2 in file2.type)
if(merged.type.(@name == t2.@name && @group == t2.@group).length() == 0)
merged.appendChild(t2.toXMLString());
trace(merged.toXMLString());