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

  • Автор темы Автор темы Spirit412
  • Дата начала Дата начала

Spirit412

Топикстартер
15 лет на форуме
Сообщения
874
Реакции
133
Есть два 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?
 
а зачем сортировать относительно шаблона ?
 
Для шаблона на утверждение.
Там для манагеров нужно указать какие формы новые, а какие старые + количество новых.

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

Возникла мысль, а не перейти ли на JSON, т.к. JS в AE, поддерживает JSON.parse.
 
Есть два 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
 
1547206256998.png
 
А можете выложить сам в.ф. посмотреть?
 
Не выходит.
Что-то не так со смартом "Example: ID By Ref XML"
На выходе, если посмотреть файл xpath_unresolved_Cyan_color-blank_6.xml, должен быть PANTONE 877 C
test Blank-2_01.rar
В архиве в.ф. и рабочие XML
 
Нашёл ошибку в файле color-blank.xml
PANTONE 427 C
Лишний пробел
Но это не помогло
 
И в color-file исправьте
<Inks>
<Ink ...
соответсвенно в
/JOB/Inks/Ink[@ColorName = '']/@ID

Split XML
/JOB/Inks/Ink
 
Через Join XML File потом можете это всё "склеить" обратно.
 
Упорно не хочет отрабатывать последний тикет.
xpath_unresolved
Вроде и запрос верный.
 
с XMP из PDF много сюрпризов. Разные программы пишут по разному.
в нормализованном ПДФ, который вполне может у вас проскочить, цвета не будут так называться.
 
с XMP из PDF много сюрпризов. Разные программы пишут по разному.
в нормализованном ПДФ, который вполне может у вас проскочить, цвета не будут так называться.
Работаем все в AI, так что не должно возникнуть проблем.

Зато возникла проблема с "Join XML Files"
Я полученные десять xml группирую Data Collector, потом сортирую через Sort. Да вот беда - сортировка выходит 10...1...2...3...4...
Есть ли возможность обойтись без этого?
 
надо цифирки добавлять 01 02 03
писать скриптулю;
или пользовать Modification date, надеюсь там время юниксовое учитывается, а не секунды
 
нолики, это первое что попробовал. Но просто влоб... 010, 01, 02, 03 и т.д. выдаёт
С временем не хочется рисковать.
Думаю как вариант, выбрать с 1 по 9 файл - Join, затем выбрать 10й и еще раз Join. Наверное как-то так
 
Работаем все в AI, так что не должно возникнуть проблем.

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

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