0

我有这样的 XML 数据:

<?xml version="1.0" encoding="UTF-16"?>
<APIDATA xmlns="api-com">
<ORDER EngineID="1" OrderID="66"></ORDER>
<ORDER EngineID="2" OrderID="67"></ORDER>
</APIDATA>

在 SSIS 控制流中,我想循环订单。我需要这两个 ID 构成订单元素以供以后使用。我使用 Foreach 循环组件和 Foreach NodeList Enumerator。

Enumeration type: NodeText
OuterXpathString: //@EngineID | //@OrderID 

然后在变量映射上,我使用索引为 0 和 1 的两个字符串变量来获取两个 ID。不幸的是,变量值不是我所期望的,它们以某种方式被反转了。它们如下所示:

loop sequence 1: variable1 = 1, variable2 = 2
loop sequence 2: variable1 = 66, variable2 = 67

这是不正确的,因为我想使用单个 ORDER 元素的 ID 循环执行任务。(所以我想得到循环序列1:variable1 = 1,variable2 = 66。)我怎样才能做到这一点?我的 xpath 有什么根本问题吗?

谢谢您的帮助。

4

1 回答 1

1

试试这个:

EnumerationType:  ElementCollection
OuterXPathString: //*[name() = 'ORDER']
InnerElementType: NodeText
InnerXPathString: @*

变量设置与您完全一样。

在我的 SSIS 2012 中它可以工作,但是正如我在问题评论中所写的那样,运行您的示例的结果与您的不同。因此,您的结果也可能会有所不同。

通常,由于 xml 中的命名空间,OuterXPathString 很复杂(更多信息:XMLNS 破坏 XPath 引用),如果没有 APIDATA 元素处的 xmlns,它将是://ORDER

于 2012-08-27T22:11:50.287 回答