c# - 从 XML 文件读取源文件

标签 c# sql ssis sql-server-2016 script-task

我有一个进程正在接收成对出现的文件。一个是ctr文件,另一个是数据文件。除了扩展名不同之外,ctr 和数据文件将始终具有相同的名称。例如。 dfghj.ctl 和 dfghj.dat

我遇到的问题是我同时收到多个这样的对。区分哪个是哪个的唯一方法是查看 ctl 文件。这告诉我与之相关的 .dat 文件是 report.jsonl 文件还是 delta.jsonl 文件。

.ctl 的示例是:

<DTSControl>
<Version>1.0</Version>
<AddressType>DTS</AddressType>
<MessageType>Data</MessageType>
<From_DTS>x26OT075</From_DTS>
<To_DTS>x26OT075</To_DTS>
<Subject>ECDS Submission</Subject>
<LocalId>TEST-delta.jsonl</LocalId>
<WorkflowId>SUS_CDS</WorkflowId>
<Encrypted>N</Encrypted>
<Compress>Y</Compress>
</DTSControl>

我需要访问的是 LocalId,它告诉我 .dat 是什么类型的文件,因此我需要将其加载到哪个表。一旦我知道哪个文件是哪个文件,我就需要将关联的 .dat 文件名传递给变量以填充源连接。

我唯一能想到的是一个加载ctl文件的脚本任务,隔离LocalId,如果它像*-report.jsonl,那么去掉文件的最后三个字符,并用dat替换ctl并传递它字符串到变量,但我不知道如何获取 LocalId,因为我不使用 c#。

有谁能指点一下如何到达那里吗?它可能并不总是第八行,所以我更愿意告诉它使用不会改变的 LocalID。

提前致谢

最佳答案

尝试 xml linq:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;


namespace ConsoleApplication16
{
    class Program
    {


        static void Main(string[] args)
        {
            string xml =
               "<DTSControl>" +
                    "<Version>1.0</Version>" +
                    "<AddressType>DTS</AddressType>" +
                    "<MessageType>Data</MessageType>" +
                    "<From_DTS>x26OT075</From_DTS>" +
                    "<To_DTS>x26OT075</To_DTS>" +
                    "<Subject>ECDS Submission</Subject>" +
                    "<LocalId>TEST-delta.jsonl</LocalId>" +
                    "<WorkflowId>SUS_CDS</WorkflowId>" +
                    "<Encrypted>N</Encrypted>" +
                    "<Compress>Y</Compress>" +
               "</DTSControl>";

            XDocument doc = XDocument.Parse(xml);

            string localId = (string)doc.Descendants("LocalId").FirstOrDefault();
        }
    }

}

关于c# - 从 XML 文件读取源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47717291/

相关文章:

sql - oracle SQL 中的 if-elseif-else 'condition'

sql-server - SSIS 具有数百万数据可从源和目标进行比较

sql-server-2005 - 删除或不删除 ssis 包目标表中的行

c# - MonoTouch项目中使用RedLaserSDK的例子

c# - HttpNotFoundResult 会导致抛出 HttpException?

c# - Asp.NET 服务器控件回发

php - 多个左连接不适用于子查询

c# - MessageBox 不显示所有给定的字符串

MySQL 查询在/tmp 中使用了 10G 空间并因 'Errcode: 28 - No space left on device' 而终止,但在本地运行良好

sql-server - 如何使用 SSIS 通过 foreach 循环容器调整记录集中的变量类型