2011-09-09 3 views
0

일부 요소로 구성된 xsd 형식이 있습니다. ParametersTypeBizTalk에서 레코드 배열을 만드는 방법

<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" /> 같이 정의되며, I 형은 Parameter 레코드의 배열을 갖는다. 따라서 지금까지 2 가지 질문이 있습니다 :

  1. Ноw이 배열을 초기화하고 표현식 블록에서 작업하는 방법입니다.
  2. 동일한 유형의 수신 메시지에서 내 메시지로 매핑을 조정하는 방법은 무엇입니까?

답변

3

여기서 배열에 관해 이야기 할 때 우리는 실제로 메시지 내의 중첩되고 반복 가능한 노드에 대해 이야기합니다.

하나의 솔루션은 오케스트레이션의 루프 안에서 배열을 분해하는 것입니다.

이 간단하지 않지만 여기에 예이다 :

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; 

당신에게 "있었던 파라미터를"당신의 오케스트레이션 내부 배열을 분해하고 각각에 액세스 할 수있는 방법을 제공합니다 xml 문서로 형식을 지정할 수 있습니다.

희망이 도움이됩니다.

+0

매개 변수의 새 배열을 만드는 방법은 무엇입니까? 예를 들어, 사용자 로그인과 도메인 이름이라는 두 개의 매개 변수가 있으며 매개 변수 배열을 2 개의 레코드로 채 웁니다. –

+0

@ javros 당신은 더 자세히 설명 할 수 있습니다. "매개 변수 배열에 2 개의 레코드를 채우려는 것"이 ​​무엇인지 모르겠습니다. –

+0

을 의미합니다. 나는'ProviderRequest' 엘리먼트를 가지고 있는데, 그 안에'Parameter' 타입의 엘리먼트 시퀀스로 구성된'Parameters' 엘리먼트가 있습니다. 후자는'Name'과'Value' 엘리먼트 (문자열)로 구성됩니다. 그것은처럼 보이는 발급자 날짜 2011-09-13T10 : 43 : 00. BizTalk에서 요소를 어떻게 채울 수 있습니까? –

관련 문제