从SSIS中的XML获取值

从SSIS中的XML获取值,xml,ssis,Xml,Ssis,我有如下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> 然后在变量映射上,我使用索引为0和1的两个字符串变量来获取两个I

我有如下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>
然后在变量映射上,我使用索引为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有什么根本性的问题吗

谢谢你的帮助。

试试这个:

EnumerationType:  ElementCollection
OuterXPathString: //*[name() = 'ORDER']
InnerElementType: NodeText
InnerXPathString: @*
变量的设置与您的完全相同

在我的SSIS 2012中,它是有效的,但正如我在有问题的评论中所写的,运行您的示例得到的结果与您的不同。所以你的结果也有可能不同


通常,由于xml中的名称空间(更多信息:),OuterXPathString比较复杂,如果APIDATA元素中没有xmlns,它将是:
//ORDER

我在SSIS 2012下运行您的示例,得到了不同的结果:四次迭代,1:V1==V2==1;2:V1==V2==66;3:V1==V2==2;4:V1==V2==67;
EnumerationType:  ElementCollection
OuterXPathString: //*[name() = 'ORDER']
InnerElementType: NodeText
InnerXPathString: @*