2011-02-18 109 views
1

我想从使用functoids的输入xml消息中获取数据。但这似乎并不奏效。下面是我的XML片段BizTalk映射所需的帮助

<?xml version="1.0" ?> 
<ROOT> 
    <COMPANIES> 
     <COMPANY> 
      <NAME>FOO CORP</name> 
     </COMPANY> 
     <COMPANY> 
      <NAME>ACME CORP</name> 
     </COMPANY> 
    </COMPANIES> 
    <INFORMATIONS> 
     <INFORMATION> 
      <TESTING> 
       <TESTS> 
        <NAME>1221</NAME> 
        <TEST> 
         <TEXT>I AM SAM</TEXT> 
        </TEST> 
       </TESTS> 
       <TESTS> 
        <NAME>21</NAME> 
        <TEST> 
         <TEXT>FADFDF</TEXT> 
        </TEST> 
       </TESTS> 
       <TESTS> 
        <NAME>3001</NAME> 
        <TEST> 
         <TEXT>SGFGSDFG</TEXT> 
        </TEST> 
       </TESTS> 
       <TESTS> 
        <NAME>4569</NAME> 
        <TEST> 
         <TEXT>12312</TEXT> 
        </TEST> 
       </TESTS> 
      </TESTING> 
     <INFORMATION> 
    </INFORMATIONS> 
</ROOT> 
  1. 首先我通过一家试图进行循环,并获得NAME“的ACME公司”。但我使用的functoid(脚本,字符串提取等)我总是得到FOO CORP。我甚至尝试了内联XSLT,但这似乎也不起作用。任何想法如何获得第二个公司名称?

  2. 其次,我已将<TEXT>直接映射到目标架构中的<node>。我得到的只有<TEXT>的2个值。并非所有的<TEXT>都映射到我的<node>。输出我得到是 我不明白的是

    I AM SAM FADFDF

我不明白

<node>SGFGSDFG</node> 
<node>12312</node> 

任何人知道如何我能得到的价值观?

在此先感谢

欢呼声,

KARTHIK

+0

请为您的示例文档添加您的目的地模式和/或您想要的输出。 – Filburt 2011-02-18 07:59:03

+0

这只是一个基于我原始输入文件创建的虚拟xml文件。问题是我无法分享原始文件。结构明智两者都是相同的 – KK99 2011-02-18 08:24:42

回答

1

Q1:如何获得的第二COMPANYNAME

1)添加迭代 functoid的(高级的functoid),并连接到COMPANY节点在源模式

2)添加平等 functiod(逻辑的functoid),并连接到迭代的functoid

3)配置等于 functoid;添加恒定值2

4)添加值映射(压扁) functoid的(高级的functoid)

5)连接的平等输出到值映射的输入

6)连接NAME源模式的输入价值映射

7)Con 值映射的NECT输出到目标架构元件


Q2:不是所有的源TEXT元素被转换为目的地node

这似乎是你的映射concering Q1的副作用,我不能重现你的错误。

检查所涉及元素/节点的源和目标架构的minOccurs和maxOccurs。