2012-04-04 52 views
2

我將開始使用MS AX2010。當通過AX WCF服務訪問數據時,響應是包含名稱/值對的XML - 稱爲密鑰數據列表。我將在BizTalk中收集這些XML,並將其轉換爲規範的層次結構。因此,例如,如果我通過「OrderNumber」讀取源名稱元素,那麼我會將關聯的映射到目標架構中的OrderNumber元素。 有沒有人發現過使用BizTalk地圖做這件事的好方法?BizTalk映射名稱值對與分層架構

回答

2

我承認您更喜歡使用圖形化的functoids,但是如果您可以接受xslt路線,這非常簡單(請參閱here將視覺地圖轉換爲xslt)。例如。下面的XSLT

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:ns0="inputxmlns" 
       xmlns:ns1="outputxmlns" 
       exclude-result-prefixes="ns0" 
       > 
    <xsl:output method="xml" indent="yes"/> 
    <xsl:template match="/ns0:Root"> 
     <ns1:Root> 
      <ns1:Elements> 
       <xsl:for-each select="ns0:Elements/ns0:Element"> 
        <xsl:element name="ns1:{normalize-space(*[local-name()='Name']/text())}"> 
         <xsl:value-of select="ns0:Value/text()"/> 
        </xsl:element> 
       </xsl:for-each> 
      </ns1:Elements> 
     </ns1:Root> 
</xsl:template> 
</xsl:stylesheet> 

將改變準EAV模式:

<?xml version="1.0" encoding="utf-8"?> 
<Root xmlns="inputxmlns"> 
    <Elements> 
     <Element> 
      <Name> 
       NameOfElement1 
      </Name> 
      <Value> 
       ValueOfElement1 
      </Value> 
     </Element> 
     <Element> 
      <Name> 
       NameOfElement2 
      </Name> 
      <Value> 
       ValueOfElement2 
      </Value> 
     </Element> 
    </Elements> 
</Root> 

要這樣:

<?xml version="1.0" encoding="utf-8"?> 
<ns1:Root xmlns:ns1="outputxmlns"> 
    <ns1:Elements> 
    <ns1:NameOfElement1> 
       ValueOfElement1 
      </ns1:NameOfElement1> 
    <ns1:NameOfElement2> 
       ValueOfElement2 
      </ns1:NameOfElement2> 
    </ns1:Elements> 
</ns1:Root> 
+0

這是偉大的 - 非常感謝您的幫助。 – 2012-04-17 13:34:16