Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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
Sql SSIS-XML任务-XSLT操作_Sql_Xml_Xslt_Ssis - Fatal编程技术网

Sql SSIS-XML任务-XSLT操作

Sql SSIS-XML任务-XSLT操作,sql,xml,xslt,ssis,Sql,Xml,Xslt,Ssis,我在SQLServer的变量中有一个值(整数) 以及包含大量元素的XML文件。其中一个元素有一个值。我需要将这个值替换为变量值 我不知道如何使用XML任务-XSLT转换 例如: 变量值:12345 XML元素:00000 我需要: 12345 谢谢你的提示和技巧 您真正要问的是如何将SSIS中的参数传递给XML任务XSLT操作 不幸的是,XML任务功能有些有限。它不接受任何XSLT参数 有几种简单的方法可以克服这种限制: 使用参数实现XSLT转换的SSIS脚本任务 SSIS脚本任务,通过LINQ

我在SQLServer的变量中有一个值(整数)

以及包含大量元素的XML文件。其中一个元素有一个值。我需要将这个值替换为变量值

我不知道如何使用XML任务-XSLT转换

例如:

变量值:12345
XML元素:00000

我需要:

12345


谢谢你的提示和技巧

您真正要问的是如何将SSIS中的参数传递给XML任务XSLT操作

不幸的是,XML任务功能有些有限。它不接受任何XSLT参数

有几种简单的方法可以克服这种限制:

  • 使用参数实现XSLT转换的SSIS脚本任务
  • SSIS脚本任务,通过LINQ到XML API修改XML
  • 等等
  • 下面是如何通过方法1实现这一点。您需要向SSIS脚本任务传递四个参数。其中三个用于XML/XSLT/XML文件,最后一个是SSIS变量

    c#

    请就您在尝试完成此任务时遇到的困难提出具体问题。否则,看起来您只是在找人为您编写代码提示:这是一项微不足道的任务。从标识转换模板开始,添加与要修改的元素匹配的模板。
    void Main()
    {
       const string SOURCEXMLFILE = @"e:\Temp\UniversalShipment.xml";
       const string XSLTFILE = @"e:\Temp\UniversalShipment.xslt";
       const string OUTPUTXMLFILE = @"e:\temp\UniversalShipment_output.xml";
       bool paramXSLT = true;
    
       try
       {
          XsltArgumentList xslArg = new XsltArgumentList();
          if (paramXSLT)
          {
             // Create a parameter which represents the current date and time.
             DateTime d = DateTime.Now;
             xslArg.AddParam("date", "", d.ToString());
          }
    
          using (XmlReader src = XmlReader.Create(SOURCEXMLFILE))
          {
             XslCompiledTransform xslt = new XslCompiledTransform();
             xslt.Load(XSLTFILE, new XsltSettings(true, true), new XmlUrlResolver());
    
             XmlWriterSettings settings = xslt.OutputSettings.Clone();
             settings.IndentChars = "\t";
             // to remove BOM
             settings.Encoding = new UTF8Encoding(false);
    
             using (XmlWriter result = XmlWriter.Create(OUTPUTXMLFILE, settings))
             {
                xslt.Transform(src, xslArg, result, new XmlUrlResolver());
                result.Close();
             }
          }
          Console.WriteLine("File '{0}' has been generated.", OUTPUTXMLFILE);
       }
       catch (Exception ex)
       {
          Console.WriteLine(ex.Message);
       }
    }