TypedPolling xsd为更简单的架构

时间:2016-01-29 21:34:07

标签: wcf xsd biztalk biztalk-mapper

我有一个WCF SQL接收位置,能够从数据库中获取相关详细信息。

xml看起来像这样:

<TypedPolling xmlns="http://schemas.microsoft.com/Sql/2008/05/TypedPolling/EmailNotifications">
   <TypedPollingResultSet0>
     <TypedPollingResultSet0>
       <strPortName>port name 1</strPortName>
       <LastRun_UTC>2016-01-29T10:20:10.083Z</LastRun_UTC>
     </TypedPollingResultSet0>
     <TypedPollingResultSet0>
       <strPortName>portname 2</strPortName>
       <LastRun_UTC>2016-01-29T11:37:38.82Z</LastRun_UTC>
     </TypedPollingResultSet0>
     <TypedPollingResultSet0>
       <strPortName>portname3</strPortName>
       <LastRun_UTC>2016-01-29T11:37:39.353Z</LastRun_UTC>
     </TypedPollingResultSet0>
   </TypedPollingResultSet0>
</TypedPolling>

关联的xsd是这样的:

<?xml version="1.0" encoding="utf-16" ?> 
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003"
           targetNamespace="http://schemas.microsoft.com/Sql/2008/05/TypedPolling/EmailNotifications" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="TypedPolling">
    <xs:complexType>
      <xs:sequence> 
        <xs:element name="TypedPollingResultSet0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="TypedPollingResultSet0">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="strPortName" 
                                type="xs:string" /> 
                    <xs:element name="LastRun_UTC" 
                                type="xs:dateTime" /> 
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

我想将此架构中的数据移动到更简单的架构,其xsd如下所示:

<?xml version="1.0" encoding="utf-16" ?> 
<xs:schema xmlns="http://_024_EmailNotifications_Schemas.BizTalkDTADBExtractMod"
           xmlns:b="http://schemas.microsoft.com/BizTalk/2003"
           targetNamespace="http://_024_EmailNotifications_Schemas.BizTalkDTADBExtractMod" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Root">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" 
                    name="Notification">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="strPortName" 
                          type="xs:string" /> 
              <xs:element name="LastRun_UTC" 
                          type="xs:string" /> 
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

我创建了一个变换形状并进行了一对一的映射。

源有4条记录,但在映射后我只得到一条记录。

有人可以帮我弄清楚做错了吗?

1 个答案:

答案 0 :(得分:2)

在地图中添加循环functoid,输入来自重复TypedPollingResultSet0,输出转到Notification

此外,避免从浏览器复制和粘贴XML - 会添加不受欢迎的字符(问题中的所有-),并且包含一些有关地图的详细信息是一个好主意