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 制御フローで、注文をループしたいと思います。後で使用するために、注文要素から 2 つの ID が必要です。Foreach NodeList Enumerator を使用して、Foreach ループ コンポーネントを使用します。

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

次に、変数マッピングで、インデックス 0 と 1 の 2 つの文字列変数を使用して、2 つの ID を取得します。残念なことに、変数の値は期待したものではなく、何らかの形で反転しています。それらは次のように表示されます。

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

単一の ORDER 要素の ID を使用してループ内でタスクを実行したいので、これは正しくありません。(したがって、ループ シーケンス 1 を取得したいと思います: 変数 1 = 1、変数 2 = 66。) どうすればこれを達成できますか? xpath に根本的な問題がありますか?

助けてくれてありがとう。

4

1 に答える 1

1

これを試して:

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

変数はあなたとまったく同じように設定されます。

私のSSIS 2012では動作しますが、質問のコメントに書いたように、あなたの例を実行するとあなたとは異なる結果が得られました。したがって、結果も異なる可能性があります。

通常、OuterXPathString は xml の名前空間のために複雑です (詳細: XMLNS は XPath 参照を中断します)。APIDATA 要素に xmlns がないと、次のようになります//ORDER

于 2012-08-27T22:11:50.287 に答える