我有这样的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是根本出错的吗?
感谢您的帮助。
答案 0 :(得分:1)
试试这个:
EnumerationType: ElementCollection
OuterXPathString: //*[name() = 'ORDER']
InnerElementType: NodeText
InnerXPathString: @*
变量设置与您完全相同。
在我的SSIS 2012中,它有效,但正如我写的那样,评论我得到的结果不同于你。所以你的结果可能会有所不同。
一般来说,由于xml中的命名空间,OuterXPathString很复杂(更多信息:XMLNS breaks XPath referencing),而APIDATA元素没有xmlns://ORDER
。