SSIS-XML任务-XSLT操作



我在SQL Server的变量中有值(整数(。

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

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

例如:

变量值:1234
XML元素:<元素>00000</元素>

我需要:

<元素>1234<元素>

感谢您的提示和技巧!

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

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

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

  1. SSIS脚本任务,该任务使用参数实现XSLT转换
  2. SSIS脚本任务,通过LINQ到XML API的XML修改
  3. 等等

以下是如何通过方法#1进行操作。您需要将四个参数传递给SSIS脚本任务。其中三个用于XML/XLT/XML文件,最后一个是SSIS变量。

c#

void Main()
{
const string SOURCEXMLFILE = @"e:TempUniversalShipment.xml";
const string XSLTFILE = @"e:TempUniversalShipment.xslt";
const string OUTPUTXMLFILE = @"e:tempUniversalShipment_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);
}
}

最新更新