在SSIS中从XML获取值

时间:2012-08-27 11:57:08

标签: 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>

在SSIS控制流程中,我想循环查看订单。我需要两个ID来形成订单元素供以后使用。我使用Foreach循环组件,与Foreach NodeList枚举器。

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是根本出错的吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

试试这个:

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

变量设置与您完全相同。

在我的SSIS 2012中,它有效,但正如我写的那样,评论我得到的结果不同于你。所以你的结果可能会有所不同。

一般来说,由于xml中的命名空间,OuterXPathString很复杂(更多信息:XMLNS breaks XPath referencing),而APIDATA元素没有xmlns://ORDER