在 SSIS 中,如何在 Foreach NodeList 枚举器中使用 XPATH 遍历特定元素内的 XML
In SSIS, how to loop through the XML inside a specific element using XPATH in a Foreach NodeList Enumerator
我正在尝试遍历 SSIS 中 XML 输入文件的 XML 元素。
为此,我尝试将 'Foreach Loop Container' 与 Foreach 循环容器一起使用。在 ForEach 循环容器内,我想获取 xml 代码作为字符串变量。
我是 SSIS 的新手,浏览网页已经有一段时间了,但还是不太对劲..
输入文件示例;
(请注意,那里有一些西里尔符号,这可能会导致问题。但是,当我取出西里尔符号时,会显示相同的错误消息)。
我正在尝试遍历节点。
这是我目前创建的包;
在ForEach循环下面;
我有一个名为 'CurrencyRate' 的变量,它是一个映射到那里的字符串。
和循环内的 XML 任务。这仅用于测试目的,它应该将最后一个节点元素写入该输出文件,并带有标签和值。
但是,如果我按原样 运行 代码,我会收到以下错误消息,即使我在我的数据中没有看到任何 NULL 值。而且我不知道日语(?)符号来自哪里......;
如有任何帮助,我们将不胜感激! SSIS 看起来像一个强大的工具,我很想能够使用它。
我现在使用 Foreach From Variable 枚举器,而不是 Foreach NodeList 枚举器。
这是整个包裹;
使用以下变量;
在第一个脚本任务中使用以下脚本'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;
}
然后使用 Foreach From Variable Enumerator 循环此对象变量,将节点映射到对象变量 'CurrencyRate_Item'。
在循环中,这个项目被移动到一个字符串变量中,然后我们可以根据需要使用它。
我正在尝试遍历 SSIS 中 XML 输入文件的 XML 元素。 为此,我尝试将 'Foreach Loop Container' 与 Foreach 循环容器一起使用。在 ForEach 循环容器内,我想获取 xml 代码作为字符串变量。
我是 SSIS 的新手,浏览网页已经有一段时间了,但还是不太对劲..
输入文件示例;
我正在尝试遍历节点。
这是我目前创建的包;
在ForEach循环下面;
我有一个名为 'CurrencyRate' 的变量,它是一个映射到那里的字符串。
和循环内的 XML 任务。这仅用于测试目的,它应该将最后一个节点元素写入该输出文件,并带有标签和值。
但是,如果我按原样 运行 代码,我会收到以下错误消息,即使我在我的数据中没有看到任何 NULL 值。而且我不知道日语(?)符号来自哪里......;
如有任何帮助,我们将不胜感激! SSIS 看起来像一个强大的工具,我很想能够使用它。
我现在使用 Foreach From Variable 枚举器,而不是 Foreach NodeList 枚举器。
这是整个包裹;
使用以下变量;
在第一个脚本任务中使用以下脚本'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;
}
然后使用 Foreach From Variable Enumerator 循环此对象变量,将节点映射到对象变量 'CurrencyRate_Item'。 在循环中,这个项目被移动到一个字符串变量中,然后我们可以根据需要使用它。