Преобразование XML Config Cron Job Time для разных сред - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь выполнить преобразование XML-задания cron, которое у меня есть. Но преобразование не работает. Я перепробовал все перестановки, но что-то не так ..

вот мой xml

    <?xml version="1.0" encoding="UTF-8"?>

<job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         version="2.0">

  <processing-directives>
    <overwrite-existing-data>true</overwrite-existing-data>
  </processing-directives>

  <schedule>
    <job>
      <name>Suspend User Job</name>
      <group>DailyJob</group>
      <description>This job will Suspend/Terminate User</description>
      <job-type>SuspendTerminateUserJob</job-type>
      <durable>true</durable>
      <recover>false</recover>
    </job>

    <trigger>
      <cron>
        <name>suspendTerminateUserTrigger</name>
        <group>indexTriggerGroup</group>
        <job-name>Suspend User Job</job-name>
        <job-group>DailyJob</job-group>
        <misfire-instruction>DoNothing</misfire-instruction>
        <cron-expression>0 55 3 ? * * *</cron-expression>
      </cron>
    </trigger>
  </schedule>
</job-scheduling-data>

пытается преобразовать CRON-EXPRESSION в новое время ... используя следующее преобразование (обратите внимание на расписание / задание ... может быть много группировок, поэтому необходимо выполнить поиск по имени триггера):

<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <schedule>
    <trigger>
      <cron>
        <add cron-expression="0 15 3 ? * * *" 
          xdt:Transform="Replace"
          xdt:Locator="XPath(job-scheduling-data/schedule/trigger/cron[name='suspendTerminateUserTrigger'])" />
      </cron>
    </trigger>
  </schedule>
</job-scheduling-data>

Мне кажется, что этот xpath правильный ... но он не преобразует xml. я пытался использовать сайт https://webconfigtransformationtester.apphb.com/

1 Ответ

0 голосов
/ 03 июля 2019

Таким образом, проблема заключается в пространстве имен исходного XML-файла. Решил это удаление пространства имен из исходного xml. И добавление косой черты в начало xpath в файле преобразования.

xdt:Locator="XPath(/job-scheduling-data/schedule/trigger/cron[name='suspendTerminateUserTrigger'])" />

Это также можно сделать, добавив ссылку на пространство имен для файла преобразования, а затем в xpath, ссылаясь на каждый элемент с пространством имен ... но это выглядело как более запутанный подход. как это:

<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns:quartz="http://quartznet.sourceforge.net/JobSchedulingData">
  <schedule>
    <trigger>
      <cron>
        <add cron-expression="0 15 3 ? * * *" 
          xdt:Transform="Replace"

          xdt:Locator="XPath(/quartz:job-scheduling-data/quartz:schedule/quartz:trigger/quartz:cron[quartz:name='suspendTerminateUserTrigger'])"
         />
      </cron>
    </trigger>
  </schedule>
</job-scheduling-data>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...