使用 xml 结构作为 quartz.net 作业数据映射条目

Using xml structure as quartz.net job-data-map entry

我需要使用 xml 配置来配置我的 Quartz.net 作业,所以我的 quartz.xml 配置中有以下代码:

<job>
  <name>my_job</name>
  <group>job_group_2</group>
  <description>...</description>
  <job-type>Something.Somewhere.MyJob, Something.Somewhere</job-type>
  <job-data-map>
    <entry>
      <key>sources</key>
      <value>
        <sources>
          <source>
            <partnerId>1</partnerId>
            <ourPartnerId>2</ourPartnerId>
            <currency>971</currency>
            <path>test</path>
          </source>
        </sources>
      </value>
    </entry>
  </job-data-map>
</job>

在我的代码中,我想获取 sources 标签下的 xml 结构作为字符串,像这样

public class PayOnlineImportJob : IJob
{
    public Task Execute(IJobExecutionContext context)
    {
        var data = context.MergedJobDataMap;

        var sourcesXml = data.GetString("sources");

        // sourcesXml should be:

        // <sources>
        //  <source>
        //   <partnerId>1</partnerId>
        //   <ourPartnerId>2</ourPartnerId >
        //   <currency>971</currency>
        //   <path>test</path>
        //  </source>
        // </sources>
    }
}

当我 运行 我的服务时,工作没有被解雇。但是,如果我用简单的 test 替换 value 标签内的所有内容,它确实有效。有没有办法将 xml 结构放入 value 标签中?

JobDataMap 仅存储键值对列表。 所以你想做的事是不可能的。 您可能更愿意将此结构存储在 app.config、appSettings.config 或 web.config 中,然后从那里读取它。