Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml QuartzNet配置的SlowCheetah变换_Xml_Xpath_Quartz.net_Slowcheetah - Fatal编程技术网

Xml QuartzNet配置的SlowCheetah变换

Xml QuartzNet配置的SlowCheetah变换,xml,xpath,quartz.net,slowcheetah,Xml,Xpath,Quartz.net,Slowcheetah,我正在尝试使用SlowCheetah设置QuartzNet作业配置文件的转换。QuartzNet要求作业调度数据节点上存在xmlns属性,但该属性的存在似乎阻止了SlowCheetah运行转换 简单来说,这就是我的日程安排配置: <?xml version="1.0" encoding="UTF-8"?> <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns

我正在尝试使用SlowCheetah设置QuartzNet作业配置文件的转换。QuartzNet要求作业调度数据节点上存在xmlns属性,但该属性的存在似乎阻止了SlowCheetah运行转换

简单来说,这就是我的日程安排配置:

<?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">
<schedule>
<job>
  <name>Job1</name>
  <group>Group1</group>
  <description>Description</description>
  <job-type>MySample.MyJob, MySample</job-type>
</job>

<trigger>
  <cron>
    <name>DefaultTrigger</name>
    <job-name>Job1</job-name>
    <job-group>Group1</job-group>
    <cron-expression>0 0 4 * * ? *</cron-expression>
    <time-zone>GMT Standard Time</time-zone>
  </cron>
</trigger>
</schedule>
</job-scheduling-data>
从原始配置文件和转换文件,或将命名空间指定为,例如
xmlns:ns1
。这两种方法中的任何一种的问题都是Quartz需要
xmlns=”http://quartznet.sourceforge.net/JobSchedulingData“
出席

我还尝试将XPath表达式与
local-name()
一起使用,试图忽略表达式语法中的名称空间,但没有效果


有没有办法解决这个问题?

在我看来,您的XPath表达式应该是:

/job-scheduling-data/schedule/trigger/cron/cron-expression[../job-name/text() = 'Job1']
因为它匹配的是
名称
,而不是
作业名称

下面的XPath表达式也可以使用:

/*[local-name()='job-scheduling-data']/*[local-name()='schedule']/*[local-name()='trigger']/*[local-name()='cron']/*[local-name()='cron-expression'][../*[local-name()='job-name']/text() = 'Job1']

你好没有名为“作业名称”的节点?您正在使用的路径中有一个节点。可能您实际上想要
/job scheduling data/schedule/job
,其中有
名称
元素,没有
作业名称
。或者您的谓词应该使用匹配
名称
进行比较,该名称是
作业
元素的子元素。如果是这种情况,那么应该是
/job scheduling data/schedule/trigger/cron/cron expression[../../../../job/name/text()='Job1']
抱歉-我是个白痴:-)我现在已经更新了转换XML,以正确反映我在名称上匹配,这是cron的子项。不管怎样,我尝试了你建议的忽略XPath表达式的名称空间,但它不起作用。但仔细检查后,我在原始XML和XPath表达式中使用了不同的大小写。。。这就是问题所在。事实上,您的名称空间忽略表达式确实有效:-)谢谢@helderdarocha第一个XPath表达式不起作用,但第二个(忽略名称空间)表达式起作用。
/job-scheduling-data/schedule/trigger/cron/cron-expression[../job-name/text() = 'Job1']
/*[local-name()='job-scheduling-data']/*[local-name()='schedule']/*[local-name()='trigger']/*[local-name()='cron']/*[local-name()='cron-expression'][../*[local-name()='job-name']/text() = 'Job1']