我正在尝试执行我已有的cron job xml的转换。但是转换不起作用。我试过所有的排列,但有些地方不对劲..
下面是我的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表达式转换为新的时间...使用以下转换(请注意时间表/作业...可以有许多分组,因此必须按触发器的名称进行搜索):
<?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/网站
发布于 2019-07-04 03:46:37
因此,原始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>编辑:最后,我不得不使用第二种方法来正确地实现转换。对于任何正在阅读这篇文章的人,请使用这句话作为答案。
https://stackoverflow.com/questions/56874738
复制相似问题