在 SSIS 中,如何在 Foreach NodeList 枚举器中使用 XPATH 循环遍历特定元素内的 XML

Kar*_*ers 5 xml foreach xpath ssis ssis-2012

我正在尝试遍历 SSIS 中 XML 输入文件的 XML 元素。为此,我尝试将“Foreach 循环容器”与 Foreach 循环容器一起使用。在 ForEach 循环容器内,我想将 xml 代码作为字符串变量。

我对 SSIS 还是很陌生,并且已经浏览了很长一段时间的网络,但无法正确使用..

输入文件示例; 输入文件例如 (注意里面有一些西里尔符号,可能会引起问题。但是,当我取出西里尔符号时,显示相同的错误信息)。

我正在尝试遍历节点。

这是我目前创建的包;

在此处输入图片说明

在 ForEach 循环下面;我有一个名为“CurrencyRate”的变量,它是一个映射到那里的字符串。 ForEach 循环

以及循环内的 XML 任务。这仅用于测试目的,它应该将最后一个节点元素写入该输出文件,并带有标签和值。

XML 任务

但是,如果我按原样运行代码,则会收到以下错误消息,即使我在数据中没有看到任何 NULL 值。而且我不知道日语(?)符号从何而来..; 错误

任何帮助将不胜感激!SSIS 看起来像一个强大的工具,我很想能够使用它。

Kar*_*ers 5

我现在使用 Foreach From Variable Enumerator 而不是 Foreach NodeList Enumerator。

这是整个包;

新包

使用以下变量;

变量

在第一个脚本任务“CurrencyRates from XML to Array”中使用以下脚本;此代码将获取 XML 并将每个节点作为一个对象放入数组中。然后将该数组传递给对象变量。

        public void Main()
    {
        // TODO: Add your code here

        System.Collections.ArrayList arr = new System.Collections.ArrayList();

        XmlDocument doc = new XmlDocument();
        doc.Load((String)Dts.Variables["User::file_path"].Value + Dts.Variables["User::file_name"].Value);
        XmlElement root = doc.DocumentElement;
        XmlNodeList nodes = root.SelectNodes("//CurrencyRate"); // You can also use XPath here
        foreach (XmlNode CurrencyRate in nodes)
        {
            arr.Add((String)CurrencyRate.InnerXml);
        }


        Dts.Variables["User::CurrencyRates"].Value = arr;

        Dts.TaskResult = (int)ScriptResults.Success;
    }
Run Code Online (Sandbox Code Playgroud)

然后使用 Foreach From Variable Enumerator 循环此对象变量,将节点映射到对象变量“CurrencyRate_Item”。在循环中,这个项目被移动到一个字符串变量中,然后我们可以根据需要使用它。

  • 感谢花时间发布详细的解决方案。你今天让互联网变得更聪明了。 (4认同)