使用 Azure Logic Apps 轉換工作流程中的 XML
適用於:Azure Logic Apps (使用量 + 標準)
在企業整合企業對企業 (B2B) 案例中,您可能需要在格式之間轉換 XML。 邏輯應用程式工作流程可以使用轉換 XML 動作和預先定義的對應來轉換 XML。
例如,假設您定期收到客戶的 B2B 訂單或發票,而該客戶使用 YearMonthDay 日期格式 (YYYYMMDD)。 不過,您的組織使用 MonthDayYear 日期格式 (MMDDYYYY)。 您可以建立並使用對應,先將 YearMonthDay 日期格式轉換為 MonthDayYear 格式,然後再將訂單或發票儲存在您的客戶活動資料庫中。
必要條件
Azure 帳戶和訂用帳戶。 如果您還沒有訂閱,則請註冊免費的 Azure 帳戶。
邏輯應用程式工作流程已透過觸發程序啟動,以便您可以在工作流程中,視需要新增轉換 XML 動作。
您在其中定義和儲存成品的整合帳戶資源 (例如交易夥伴、合約、憑證等),以用於企業整合和 B2B 工作流程。 此資源必須符合下列需求:
與邏輯應用程式資源相同的 Azure 訂閱相關聯。
與您打算使用轉換 XML 動作的邏輯應用程式資源位於相同的位置或 Azure 區域。
如果您正在處理取用邏輯應用程式資源和工作流程,則您的整合帳戶需要下列項目:
用於轉換 XML 內容的對應。
如果您正在處理標準邏輯應用程式資源和工作流程,您可以根據下列情節,將企業整合帳戶連結至邏輯應用程式資源、直接上傳對應至邏輯應用程式資源,或兩者:
如果您的企業整合帳戶已經含有需要或想要使用的成品,您可以將該企業整合帳戶連結至您想要在其中使用成品的多個標準邏輯應用程式資源。 如此一來,您就不需要將對應上傳至每一個個別邏輯應用程式。 如需詳細資訊,請參閱將邏輯應用程式資源連結至企業整合帳戶。
如果您沒有整合帳戶,或只打算在相同邏輯應用程式資源內的多個工作流程中使用成品,則可使用 Azure 入口網站或 Visual Studio Code 直接將對應新增至邏輯應用程式資源。
注意
Liquid 內建連接器可讓您選取您先前上傳至邏輯應用程式資源或連結整合帳戶的對應,但無法同時選取兩者。
因此,如果您沒有或不需要企業整合帳戶,則可以使用上傳選項。 否則,您可以使用連結選項。 不管怎樣,您都可以在相同邏輯應用程式資源的所有子工作流程中使用這些成品。
新增 [轉換 XML] 動作
在 Azure 入口網站中,於設計工具中開啟您的標準邏輯應用程式和工作流程。
如果您有不具觸發程序的空白工作流程,請遵循下列一般步驟來新增您想要的任何觸發程序。 否則,請繼續下一個步驟。
此範例使用要求觸發程序。
在您想要新增 Transform XML 動作的工作流程中,遵循下列一般步驟來新增名為 Transform XML 的動作。
在 [內容] 方塊中,使用您在 HTTP 要求中收到的任何 XML 資料,指定您想要轉換的 XML 內容。
若要選取工作流程中先前作業的輸出,請在 [轉換 XML] 動作中,在 [內容] 方塊內按一下,然後選取動態內容清單選項 (閃電圖示)。
從動態內容清單中,針對您要轉換的內容選取語彙基元。
此範例從觸發程序選取主體語彙基元。
注意
請確定選取 XML 內容。 如果內容不是 XML 或是 base64 編碼,您必須指定可處理內容的運算式。 例如,您可以使用運算式函式 (例如
base64ToBinary()
) 以決定內容,或xml()
以將內容處理為 XML。
從 [對應來源] 清單中,選取您上傳對應的位置 (不是 LogicApp 資源,就是 IntegrationAccount)。
從 [對應] 清單中,選取您的對應。
完成後,請儲存您的工作流程。
您現在已完成設定轉換 XML 動作。 在實際的應用程式中,建議您將轉換的資料儲存在 SalesForce 之類的企業營運 (LOB) 應用程式中。 若要將轉換的輸出傳送至 Salesforce,請新增 Salesforce 動作。
若要測試轉換動作,請觸發並執行工作流程。 例如,對於要求觸發程序,將要求傳送至觸發程序的端點 URL。
轉換 XML 動作會在觸發工作流程之後執行,以及當 XML 內容可供轉換時執行。
進階功能
參考組件,或從對應呼叫自訂程式碼
[轉換 XML 動作] 支援從對應參考外部組件,這可讓您直接從 XSLT 對應呼叫自訂 .NET 程式碼。 如需詳細資訊,請參閱在 Azure Logic Apps 中新增工作流程的 XSLT 對應。
參考延伸物件
在標準工作流程中,[轉換 XML] 動作支援指定要搭配對應使用的 XML 延伸物件。
位元組順序符號
根據預設,回應將會以位元組順序標記 (BOM) 開頭。 唯有在使用程式碼檢視編輯器時,您才可以取用這項功能。 若要啟用這項功能,請將 transformOptions
屬性設定為 disableByteOrderMark
:
"Transform_XML": {
"inputs": {
"content": "@{triggerBody()}",
"integrationAccount": {
"map": {
"name": "TestMap"
}
},
"transformOptions": "disableByteOrderMark"
},
"runAfter": {},
"type": "Xslt"
}