2
我將開始使用MS AX2010。當通過AX WCF服務訪問數據時,響應是包含名稱/值對的XML - 稱爲密鑰數據列表。我將在BizTalk中收集這些XML,並將其轉換爲規範的層次結構。因此,例如,如果我通過「OrderNumber」讀取源名稱元素,那麼我會將關聯的值映射到目標架構中的OrderNumber元素。 有沒有人發現過使用BizTalk地圖做這件事的好方法?BizTalk映射名稱值對與分層架構
我將開始使用MS AX2010。當通過AX WCF服務訪問數據時,響應是包含名稱/值對的XML - 稱爲密鑰數據列表。我將在BizTalk中收集這些XML,並將其轉換爲規範的層次結構。因此,例如,如果我通過「OrderNumber」讀取源名稱元素,那麼我會將關聯的值映射到目標架構中的OrderNumber元素。 有沒有人發現過使用BizTalk地圖做這件事的好方法?BizTalk映射名稱值對與分層架構
我承認您更喜歡使用圖形化的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>
這是偉大的 - 非常感謝您的幫助。 – 2012-04-17 13:34:16