使用BizTalk +多个节点映射到单个节点

时间:2009-10-19 21:39:40

标签: biztalk

我正在尝试使用此xml进行映射:

<rootxml>
  <documents>
    <document>
      <iddoc>1</iddoc>
      <total_price>1000</total_price>
    </document>
  </documents>
  <items>
    <item>
      <iddoc>1</iddoc>
      <iditem>1</iditem>
      <quantity>1</quantity>
      <price>800</price>
    </item>
    <item>
      <iddoc>1</iddoc>
      <iditem>2</iditem>
      <quantity>1</quantity>
      <price>200</price>
    </item>
  </items>
  <taxes>
    <tax>
      <iddoc>1</iddoc>
      <iditem>1</iditem>
      <idtax>1000</idtax>
      <value>123.90</value>
    <tax>
    <tax>
      <iddoc>1</iddoc>
      <iditem>2</iditem>
      <idtax>1000</idtax>
      <value>34.13</value>
    <tax>
  </taxes>
</rootxml>

到这一个:

<resultxml>
  <documento>
    <iddoc>1</iddoc>
    <total_price>1000</total_price>
    <items>
      <item>
        <iddoc>1</iddoc>
        <iditem>1</iditem>
        <quantity>1</quantity>
        <price>800</price>
        <taxes>
          <idtax>1000</idtax>
          <value>123.90</value>
        </taxes>
      </item>
      <item>
        <iddoc>1</iddoc>
        <iditem>2</iditem>
        <quantity>1</quantity>
        <price>200</price>
        <taxes>
          <tax>
            <idtax>1000</idtax>
            <value>34.13</value>
          <tax>
        </taxes>
      </item>
    </items>
  </documento>
</resultxml>

我无法找到解决这个问题的方法。虽然原始的xml文档可以包含多个文档,但它总是有一个文档,所以我必须将这些项目合并到其中并将税收纳入其各自的项目中。

谢谢

1 个答案:

答案 0 :(得分:1)

我认为你必须编写一大块自定义XSLT。循环遍历items / item,然后构建一个xpath到tax / tax [where iditem = $ itemId]。诀窍是将第一个itemId放入变量中。

抱歉,我现在时间有限,无法为您创建完整的工作演示。 这是我前一段时间的相关问题: http://www.stylusstudio.com/ssdn/default.asp?action=9&fid=48&read=7896

Neal Walters