簡體   English   中英

如何使用 Azure 數據工廠將 XML 元素讀入變量

[英]How to read an XML element into a variable with Azure Data Factory

我正在嘗試使用 Azure 數據工廠從 API 讀取數據。 首先我需要調用一個登錄方法,它提供了一個 XML 響應。 我需要從 XML 中取出一個元素並將其放入我的下一個 API 調用中以獲取我需要的數據。

目前我正在使用復制數據工具調用登錄方法並將 XML 保存到 blob 存儲。 我現在如何將 XML 的元素讀入變量?

如果有更好的方法,請提出建議,但我仍然想知道如何將 XML 元素讀入變量。

編輯:這是返回的 XML。 我需要捕獲 SessionID。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <DoLoginResponse xmlns="http://foo.bar">
            <DoLoginResult>
                <OperationStatus>true</OperationStatus>
                <StatusMessage />
                <SecurityProfile>
                    <User></User>
                    <Session>
                        <SessionId>d2cf6ea6-120f-4bff-a5d1-adad9063d9d2</SessionId>
                    </Session>
                    <IsFirstLogon>true</IsFirstLogon>
                    <IsSystemOwner>false</IsSystemOwner>
                </SecurityProfile>
            </DoLoginResult>
        </DoLoginResponse>
    </soap:Body>
</soap:Envelope>

解決方案1:

我最終通過使用查找活動來完成它,該活動采購了連接 HTTP 鏈接服務的 XML 數據集。 The returned XML is output from the activity as a json object which is normally accessable with activity('GetSessionID').output.etc. 但是,某些元素名稱包含冒號(soap:Envelope 和 soap:Body)和 Azure 當我將它們作為動態內容放入時,數據工廠給了我一個“BadRequest”錯誤。 為了解決這個問題,我將它轉換為 XML,字符串,去掉冒號,轉換回 xml,然后轉換為 json。 從那里我可以像往常一樣訪問該物業。 這是給我 session id 的動態內容:

@json(xml(replace(string(xml(activity('GetSessionID').output.firstRow)), ':', ''))).Envelope.Body.DoLoginResponse.DoLoginResult.SecurityProfile.Session.SessionId


解決方案2:

我認為可以將 xml 文件的一部分提取到字符串變量中。 我的想法是將xml文件轉換成字符串,根據表達式動態提取SessionId部分。

我在這里創建了一個簡單的測試:

  1. 我正在使用查找活動來獲取 xml 文件,您應該替換為 web 活動。 我聲明了 2 個字符串變量XMLStringSessionId 在此處輸入圖像描述

  2. Set variable1活動中,添加動態內容@string(activity('Lookup1').output.value[0])為變量XMLString賦值。 如果您使用的是 Web 活動,則內容應為@string(activity('<Web_Actvity_Name>').output) 在此處輸入圖像描述

  3. Set variable2活動中,添加動態內容@substring(variables('XMLString'),add(indexof(variables('XMLString'),'SessionId'),12),sub(indexof(variables('XMLString'),'}'),add(lastindexof(variables('XMLString'),'SessionId'),13)))為變量SessionId賦值。 在此處輸入圖像描述 SessionId的值如下:
    在此處輸入圖像描述

我最終通過使用查找活動來完成它,該活動采購了連接 HTTP 鏈接服務的 XML 數據集。 The returned XML is output from the activity as a json object which is normally accessable with activity('GetSessionID').output.etc . 但是,某些元素名稱包含冒號(soap:Envelope 和 soap:Body)和 Azure 當我將它們作為動態內容放入時,數據工廠給了我一個“BadRequest”錯誤。 為了解決這個問題,我將它轉換為 XML,字符串,去掉冒號,轉換回 xml,然后轉換為 json。 從那里我可以像往常一樣訪問該物業。 這是給我 session id 的動態內容: @json(xml(replace(string(xml(activity('GetSessionID').output.firstRow)), ':', ''))).Envelope.Body.DoLoginResponse.DoLoginResult.SecurityProfile.Session.SessionId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM