2015-02-11 19 views
0

请帮助解决此地图。在这里,我用XML,HDR,DTL,FTR; DTL将ITEM-BANK,ITEM-BANK,ITEM-BANK详细信息组合在一起。我需要将其压平以输出一个记录。 1)如果ID元素为空,则它是COMMENT,并将在COMMENT输出XML中聚合为“派对的地址+派对的地址+派对的邮政编码”。 2)如果ID是BANK,那么它具有银行明细,并且TAG元素ID具有参考上述ITEM的ID值。BizTalk XML将项目配对FLATTEN输出

XSD POCProducts:http://pastebin.com/XNaq40vZ

POC MAP:

enter image description here

预期/ WANTED OUTOUT:

<ns0:PRODUCTS xmlns:ns0="http://TEST.Schema.FlatFile.POCProducts"> 
 
    <PRODUCT ProdName="Wonder Power" ProdDesc="Wonder power DESC"> 
 
    <ITEMS> 
 
     <ITEMS> 
 
     <ID>1010</ID> 
 
     <CODE>KG</CODE> 
 
     <UNIT>C0001</UNIT> 
 
     <DESC>Wonder Power 10*10ml</DESC> 
 
     <BankCode>A1</BankCode> 
 
     <BankDesc>Bank XXXX Code</BankDesc> 
 
     </ITEMS> 
 
     <ITEMS> 
 
     <ID>2020</ID> 
 
     <CODE>KG</CODE> 
 
     <UNIT>C0001</UNIT> 
 
     <DESC>Wonder Supper 50*50ml</DESC> 
 
     <BankCode>A2</BankCode> 
 
     <BankDesc>Bank yyyyy Code</BankDesc> 
 
     </ITEMS> 
 
    </ITEMS> 
 
    <VAT>5390</VAT> 
 
    <AMT>880099</AMT> 
 
    <Comment>Address of Party + Zipcode of Party + Postbus of Party</Comment> 
 
    </PRODUCT> 
 
</ns0:PRODUCTS>

电流输出XML:

<ns0:PRODUCTS xmlns:ns0="http://TEST.FlatFile.POCProducts"> 
 
    <PRODUCT ProdName="Wonder Power" ProdDesc="Wonder power DESC"> 
 
    <ITEMS> 
 
     <ITEMS> 
 
     <ID>1010</ID> 
 
     <CODE>KG</CODE> 
 
     <UNIT>C0001</UNIT> 
 
     <DESC>Wonder Power 10*10ml</DESC> 
 
     </ITEMS> 
 
     <ITEMS> 
 
     <ID>2020</ID> 
 
     <CODE>KG</CODE> 
 
     <UNIT>C0001</UNIT> 
 
     <DESC>Wonder Supper 50*50ml</DESC> 
 
     </ITEMS> 
 
    </ITEMS> 
 
    <VAT>5390</VAT> 
 
    <AMT>880099</AMT> 
 
    <Comments>Address of Party</Comments> 
 
    <Comments>Zipcode of Party</Comments> 
 
    <Comments>Postbus of Party</Comments> 
 
    </PRODUCT> 
 
</ns0:PRODUCTS>

INPUT XML:

<POC xmlns="http://TEST.Schema.FlatFile.POC"> 
    <HDR xmlns=""> 
    <ProdName>Wonder Power</ProdName> 
    <ProdDesc>Wonder power DESC</ProdDesc> 
    <Filler></Filler> 
    </HDR> 
    <DTL xmlns=""> 
    <ID>1010</ID> 
    <CODE>KG</CODE> 
    <TAG>C0001</TAG> 
    <DESC>Wonder Power 10*10ml</DESC> 
    <FILLER></FILLER> 
    </DTL> 
    <DTL xmlns=""> 
    <ID>BANK</ID> 
    <CODE>A1</CODE> 
    <TAG>1010</TAG> 
    <DESC>Bank XXXX Code</DESC> 
    <FILLER></FILLER> 
    </DTL> 
    <DTL xmlns=""> 
    <ID>2020</ID> 
    <CODE>KG</CODE> 
    <TAG>C0001</TAG> 
    <DESC>Wonder Supper 50*50ml</DESC> 
    <FILLER></FILLER> 
    </DTL> 
    <DTL xmlns=""> 
    <ID>BANK</ID> 
    <CODE>A2</CODE> 
    <TAG>2020</TAG> 
    <DESC>Bank yyyyy Code</DESC> 
    <FILLER></FILLER> 
    </DTL> 
    <DTL xmlns=""> 
    <ID></ID> 
    <CODE></CODE> 
    <TAG>Address of Party</TAG> 
    <DESC></DESC> 
    <FILLER></FILLER> 
    </DTL> 
    <DTL xmlns=""> 
    <ID></ID> 
    <CODE></CODE> 
    <TAG></TAG> 
    <DESC>Zipcode of Party</DESC> 
    <FILLER></FILLER> 
    </DTL> 
    <DTL xmlns=""> 
    <ID></ID> 
    <CODE></CODE> 
    <TAG></TAG> 
    <DESC>Postbus of Party</DESC> 
    <FILLER></FILLER> 
    </DTL> 
    <FTR xmlns=""> 
    <VAT>5390</VAT> 
    <TOTAL>880099</TOTAL> 
    <FILLER></FILLER> 
    </FTR> 
</POC> 
+0

哪里是在POCProduct.xsd注释节点?? – xyz 2015-02-11 14:42:08

+0

对不起,我错误地上传了MAP的旧图像 – SAM 2015-02-11 15:33:09

+0

“派对的地址+派对的邮政编码+派对的邮政编码”只是需要硬编码还是来自输入? – xyz 2015-02-11 15:34:43

回答

0

注释节点输出是不是很难:

您可以简单地将ID链接到逻辑相等以测试其是否为空,然后将结果连接到值映射,取决于这些注释来自您的Src,TAG或DESC或两者的链接,也将该节点链接到值映射。将值映射输出连接到字符串concat func应该足够了。

enter image description here

+0

嗨,Zee,它不工作,因为它下面给出输出“党邮编党邮政巴士党的的地址”我需要级联上面给出的所有数据.. – SAM 2015-02-12 13:44:06

+0

SAM一个comment元素:我添加了一个屏幕截图。你的地图是这样的吗? – Zee 2015-02-13 16:41:11