我有来自 SQL Server 的变量值(整数)。
以及包含大量元素的 XML 文件。这些元素之一具有一个值。我需要将此值替换(更改)为我的变量值。
我不知道如何使用 XML 任务 - XSLT 转换。
例如:
<块引用>变量值:12345
XML元素:<元素>00000元素>
我需要:
<块引用><元素>12345元素>
感谢您的提示和技巧!
答案 0 :(得分:0)
您真正要问的是如何将 SSIS 中的参数传递给 XML Task、XSLT 操作。
不幸的是,XML 任务功能有些限制。它不接受任何 XSLT 参数。
克服这种限制的简单方法很少:
这里是如何通过方法#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);
}
}