AS3: объединение файлов XML - PullRequest
       8

AS3: объединение файлов XML

2 голосов
/ 16 января 2010

Здесь есть несколько сообщений о слиянии 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>

Merged

<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>

В этом примере два файла объединяются, и единицы помещаются в одинаковые имена типов и группы.

Приоритет сортировки: Имя типа> Группа типов> Значение единицы

Надеюсь, это понятно. Пожалуйста, спросите, нужны ли дополнительные разъяснения.

1 Ответ

2 голосов
/ 16 января 2010

Это должно работать для данного примера.

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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...