Вопрос по JS и XML (сортировка одного XML по другому)

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
Есть два XML, нужно первый относительно второго отсортировать.
XML:
<Ink ID="1" ColorName="PANTONE 253 C" Frequency="150" Angle="7" InkParam="новая"></Ink>
  <Ink ID="2" ColorName="Magenta" Frequency="150" Angle="67" InkParam="новая"></Ink>
  <Ink ID="3" ColorName="Yellow" Frequency="175" Angle="82" InkParam="новая"></Ink>
и
XML:
<Ink ID="1" ColorName="Yellow"></Ink>
  <Ink ID="2" ColorName="PANTONE 253 C"></Ink>
  <Ink ID="3" ColorName="Magenta"></Ink>
А получить нужно
XML:
<Ink ID="1" ColorName="Yellow" Frequency="175" Angle="82" InkParam="новая"></Ink>
<Ink ID="2" ColorName="PANTONE 253 C" Frequency="150" Angle="7" InkParam="новая"></Ink>
<Ink ID="3" ColorName="Magenta" Frequency="150" Angle="67" InkParam="новая"></Ink>
С использованием DOM это всё решается довольно просто. Но в AE, как мне объяснили, стоит ECMAScript без DOM.
Как сделать подобную сортировку в JS?
 

ACTPOHOM

12 лет на форуме
Сообщения
2 981
Реакции
1 133
а зачем сортировать относительно шаблона ?
 

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
Для шаблона на утверждение.
Там для манагеров нужно указать какие формы новые, а какие старые + количество новых.

Один XML генерится из XLS, второй из XMP PDF файла.

Возникла мысль, а не перейти ли на JSON, т.к. JS в AE, поддерживает JSON.parse.
 

baraka

Участник
Сообщения
193
Реакции
90
Есть два XML, нужно первый относительно второго отсортировать.
XML:
<Ink ID="1" ColorName="PANTONE 253 C" Frequency="150" Angle="7" InkParam="новая"></Ink>
  <Ink ID="2" ColorName="Magenta" Frequency="150" Angle="67" InkParam="новая"></Ink>
  <Ink ID="3" ColorName="Yellow" Frequency="175" Angle="82" InkParam="новая"></Ink>
и
XML:
<Ink ID="1" ColorName="Yellow"></Ink>
  <Ink ID="2" ColorName="PANTONE 253 C"></Ink>
  <Ink ID="3" ColorName="Magenta"></Ink>
А получить нужно
XML:
<Ink ID="1" ColorName="Yellow" Frequency="175" Angle="82" InkParam="новая"></Ink>
<Ink ID="2" ColorName="PANTONE 253 C" Frequency="150" Angle="7" InkParam="новая"></Ink>
<Ink ID="3" ColorName="Magenta" Frequency="150" Angle="67" InkParam="новая"></Ink>
С использованием DOM это всё решается довольно просто. Но в AE, как мне объяснили, стоит ECMAScript без DOM.
Как сделать подобную сортировку в JS?

Можно сделать через Split XML File
 

baraka

Участник
Сообщения
193
Реакции
90
1547206256998.png
 

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
А можете выложить сам в.ф. посмотреть?
 

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
Не выходит.
Что-то не так со смартом "Example: ID By Ref XML"
На выходе, если посмотреть файл xpath_unresolved_Cyan_color-blank_6.xml, должен быть PANTONE 877 C
test Blank-2_01.rar
В архиве в.ф. и рабочие XML
 

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
Нашёл ошибку в файле color-blank.xml
PANTONE 427 C
Лишний пробел
Но это не помогло
 

baraka

Участник
Сообщения
193
Реакции
90
И в color-file исправьте
<Inks>
<Ink ...
соответсвенно в
/JOB/Inks/Ink[@ColorName = '']/@ID

Split XML
/JOB/Inks/Ink
 

baraka

Участник
Сообщения
193
Реакции
90
Через Join XML File потом можете это всё "склеить" обратно.
 

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
Упорно не хочет отрабатывать последний тикет.
xpath_unresolved
Вроде и запрос верный.
 

ACTPOHOM

12 лет на форуме
Сообщения
2 981
Реакции
1 133
с XMP из PDF много сюрпризов. Разные программы пишут по разному.
в нормализованном ПДФ, который вполне может у вас проскочить, цвета не будут так называться.
 

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
с XMP из PDF много сюрпризов. Разные программы пишут по разному.
в нормализованном ПДФ, который вполне может у вас проскочить, цвета не будут так называться.
Работаем все в AI, так что не должно возникнуть проблем.

Зато возникла проблема с "Join XML Files"
Я полученные десять xml группирую Data Collector, потом сортирую через Sort. Да вот беда - сортировка выходит 10...1...2...3...4...
Есть ли возможность обойтись без этого?
 

ACTPOHOM

12 лет на форуме
Сообщения
2 981
Реакции
1 133
надо цифирки добавлять 01 02 03
писать скриптулю;
или пользовать Modification date, надеюсь там время юниксовое учитывается, а не секунды
 

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
нолики, это первое что попробовал. Но просто влоб... 010, 01, 02, 03 и т.д. выдаёт
С временем не хочется рисковать.
Думаю как вариант, выбрать с 1 по 9 файл - Join, затем выбрать 10й и еще раз Join. Наверное как-то так
 

baraka

Участник
Сообщения
193
Реакции
90
Работаем все в AI, так что не должно возникнуть проблем.

Зато возникла проблема с "Join XML Files"
Я полученные десять xml группирую Data Collector, потом сортирую через Sort. Да вот беда - сортировка выходит 10...1...2...3...4...
Есть ли возможность обойтись без этого?

1547489075170.png
 
  • Спасибо
Реакции: Spirit412