使用 Azure Logic Apps 轉換工作流程中的 XML
適用於: Azure Logic Apps(取用 + 標準)
在企業整合企業對企業 (B2B) 案例中,您可能需要在格式之間轉換 XML。 邏輯應用程式工作流程可以使用轉換 XML 動作和預先定義的對應來轉換 XML。
例如,假設您經常從使用 YearMonthDay 日期格式 (YYYYMMDD) 的客戶收到 B2B 訂單或發票。 不過,您的組織使用 MonthDayYear 日期格式 (MMDDYYYY)。 您可以在儲存客戶活動資料庫中的訂單或發票詳細數據之前,先建立並使用將 YearMonthDay 格式轉換成 MonthDayYear 格式的對應。
必要條件
Azure 帳戶和訂用帳戶。 如果您還沒有訂用帳戶, 請註冊免費的 Azure 帳戶。
已以觸發程式開頭的邏輯應用程式工作流程,以便您可以在工作流程中視需要新增 轉換 XML 動作。
您可以在 其中定義和儲存成品的整合帳戶資源 ,例如貿易夥伴、合約、憑證等,以用於企業整合和 B2B 工作流程。 此資源必須符合下列需求:
與邏輯應用程式資源相同的 Azure 訂用帳戶相關聯。
存在於您打算使用 轉換 XML 動作的邏輯應用程式資源所在的相同位置或 Azure 區域。
如果您正在處理 取用邏輯應用程式資源和工作流程,您的整合帳戶需要下列專案:
要 用於轉換 XML 內容的對應 。
邏輯應用程式資源的連結。
如果您正在處理 標準邏輯應用程式資源和工作流程,您可以根據下列案例,將整合帳戶連結至邏輯應用程式資源、直接上傳對應至邏輯應用程式資源,或兩者:
如果您已經有包含所需或想要使用的成品的整合帳戶,您可以將整合帳戶連結至您想要使用成品的多個標準邏輯應用程式資源。 如此一來,您就不需要上傳對應至每個個別邏輯應用程式。 如需詳細資訊,請參閱 將邏輯應用程式資源連結至整合帳戶。
如果您沒有整合帳戶,或只打算在相同邏輯應用程式資源內跨多個工作流程使用構件,則可以使用 Azure 入口網站 或 Visual Studio Code 直接將對應新增至邏輯應用程式資源。
注意
Liquid 內建連接器可讓您選取您先前上傳至邏輯應用程式資源或連結整合帳戶的對應,但不能同時上傳至兩者。
因此,如果您沒有或需要整合帳戶,您可以使用上傳選項。 否則,您可以使用連結選項。 無論哪種方式,您都可以在相同的邏輯應用程式資源內,跨所有子工作流程使用這些成品。
新增轉換 XML 動作
在 Azure 入口網站 中,開啟設計工具中的標準邏輯應用程式和工作流程。
如果您有沒有觸發程式的空白工作流程, 請遵循下列一般步驟來新增您想要的任何觸發程式。 否則,請繼續下一個步驟。
此範例會使用 要求 觸發程式。
在您想要新增 轉換 XML 動作的工作流程步驟下, 遵循下列一般步驟來新增名為 Transform XML 的動作。
在 [ 內容 ] 方塊中,指定您想要使用 HTTP 要求中收到的任何 XML 數據來轉換的 XML 內容。
若要選取工作流程中先前作業的輸出,請在 [轉換 XML] 動作中,按兩下 [內容] 方塊內部,然後選取動態內容清單選項 (閃電圖示)。
從動態內容清單中,選取您要轉換之內容的令牌。
此範例會 從觸發程式選取 Body 令牌。
注意
請確定您選取 [XML 內容]。 如果內容不是 XML 或 base64 編碼,您必須指定處理內容的運算式。 例如,您可以使用 表示式函數,例如
base64ToBinary()
將內容譯碼,或xml()
將內容處理為 XML。
從 [ 對應來源] 列表中,選取您上傳地圖的位置,也就是 您的LogicApp 資源或 IntegrationAccount。
從 [ 地圖 ] 清單中,選取您的地圖。
完成後,請儲存您的工作流程。
您現在已完成設定 轉換 XML 動作。 在真實世界應用程式中,您可能會想要將轉換的數據儲存在企業營運 (LOB) 應用程式中,例如 SalesForce。 若要將轉換的輸出傳送至 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"
}