【问题标题】:Getting data from XML in SSIS在 SSIS 中从 XML 获取数据
【发布时间】:2012-08-28 10:53:05
【问题描述】:

我有以下 XML:

<?xml version="1.0" encoding="UTF-16"?>
<APIDATA xmlns="api-com">
<ORDER EngineID="1" OrderID="66"><INSTSPECIFIER InstID="27" SeqID="17"/></ORDER>
<ORDER EngineID="2" OrderID="67"><INSTSPECIFIER InstID="28" SeqID="18"/></ORDER>
</APIDATA>

我想在每个循环中为所有订单条目获取 SSIS 变量的所有 ID。到目前为止,我可以在 SSIS 的控制流中使用 ForeachLoop 获取前两个 id,如下所示:

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

然后在变量映射中,我使用索引为 0 和 1 的两个字符串变量来获取两个 ID。如何获取 INSTSPECIFIER 元素的 ID?一次获取所有四个 ID 的正确 XPath 命令是什么?

注意,ORDER 元素中只能有一个 INSTSPECIFIER。此外,如果这需要单独完成,例如在 ForeachLoop 中获取 ORDER 并在 XMLTask 中获取 INSTSPECIFIER,则 OrderID 是主键。因此,在这种情况下,问题是,如何在 XMLTask 中获取 INSTSPECIFIER 条目的 InstID 和 SeqID,该条目具有具有特定 OrderID 的父 ORDER 条目?

感谢您的帮助。

【问题讨论】:

    标签: xml ssis


    【解决方案1】:

    这次尝试四个变量和InnerXPathString:@* | child::node()/@*其他值不变。

    【讨论】:

    • 我已经尝试过这种方法,但是通过映射出现错误。看来,我不能索引,而是 0 和 1(ORDER 中的元素数)。如果我尝试将 VariableInstID 映射到 2,则会收到错误消息:Error: The enumerator failed to retrieve element at index "2". 在这种情况下如何正确映射?
    • @user1348490 很难说。我有 ssis 2012、4 string variablesdefault mapping、你的 xml as sourceproperties configured,正如我所写的,一切都很好:first iterationsecond
    • 接近。一些空值处理问题仍然存在。 xml有点复杂。尽管我设法获得了一些字段,但您的答案有效。
    • 我想通了,这个错误来自实际的 xml 有不同长度的行。如果您能在其他时间帮助我,请联系follow up question。提前致谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多