2011-09-09 4 views
0

いくつかの要素で構成されるxsd型があります。要素の一つは、ParametersType私はParameterタイプ・レコードの配列を有する、あるBizTalkでレコードの配列を作成する方法

<xs:complexType name="ParametersType"> 
    <xs:sequence> 
     <xs:element name="Parameter" 
        type="ParameterType" 
        minOccurs="0" 
        maxOccurs="unbounded" /> 
     <xs:element name="UserDefinedParameter" 
        type="xs:base64Binary" 
        minOccurs="0" 
        maxOccurs="1"> 
     </xs:element> 
    </xs:sequence> 
</xs:complexType> 

ある<xs:element name="Parameters" type="ParametersType" />ように定義されています。だから私はこれまでに2つの質問を持っています:

  1. Ноwは、このような配列を初期化し、それをExpressionブロックでどのように処理するかを指定します。
  2. 同じタイプの受信メッセージから自分のメッセージへのマッピングを調整する方法はありますか?

答えて

3

ここで配列について説明するとき、メッセージ内にネストされた繰り返し可能なノードについて実際に話しています。

解決策の1つは、オーケストレーションのループ内で配列を分解することです。

これは単純ではないが、ここでは一例です:

Deconstructing nested repeatable message section inside biztalk orch

種々の発現形状の内部コード:

"配列項目をカウント"

インサイド
intCountArrayItems = xpath(MyMessage, "count(XpathToParameterNodeInYourMessage)"); 

内部"foreach配列アイテム"

intLoopIndex < intCountArrayItems 

インサイド「の使用アレイ項目」

strXPathToArrayItem = System.String.Format("XpathToParameterNodeInYourMessage[{0}]", intLoopIndex + 1); 
MyXmlDocument = xpath(MyMessage, strXPathToArrayItem); 
// Now you can do what you want with the xml document. 

インサイド「インクリメントループインデックス」

intLoopIndex = intLoopIndex + 1; 

上記は、あなたのオーケストレーション内の配列を分解し、あなたの「PARAMTER」のそれぞれにアクセスする方法を提供しますXML文書としてタイプします。

これが役に立ちます。

+0

パラメータの新しい配列を作成するにはどうすればよいですか?たとえば、私は2つのパラメータ(ユーザーログインとドメイン名)を持っています。そして、2つのレコードでParameters配列を埋めたいと思います。 –

+0

@ javrosあなたはもっと詳しく説明できます。私は "2つのレコードでパラメータ配列を埋める"という意味がわからない。 –

+0

を意味する。私は 'ProviderRequest'要素を持っています。その中に' Parameter'要素のシーケンスで構成される 'Parameters'要素があります。後者は 'Name'と' Value'要素(文字列)で構成されます。それがどのように見える発行ジョン 2011-09-13T10:43:00。 BizTalkの要素はどのように記入しますか? –

関連する問題