gpt4 book ai didi

xml - 如何使用 Azure 数据工厂将 XML 元素读入变量

转载 作者:行者123 更新时间:2023-12-05 02:00:32 25 4
gpt4 key购买 nike

我正在尝试使用 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>

最佳答案

方案一:

我最终通过使用 Lookup 事件来完成它,该事件采购连接到 HTTP 链接服务的 XML 数据集。返回的 XML 是作为 json 对象从事件中输出的,通常可以使用 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. 我正在使用 Lookup 事件获取 xml 文件,您应该替换为您的网络事件。我声明了 2 个字符串变量 XMLStringSessionId : enter image description here

  2. Set variable1事件,添加动态内容@string(activity('Lookup1').output.value[0])为变量赋值XMLString .如果您使用的是 Web 事件,则内容应为 @string(activity('<Web_Actvity_Name>').output) . enter image description here

  3. Set variable2事件,添加动态内容@substring(variables('XMLString'),add(indexof(variables('XMLString'),'SessionId'),12),sub(indexof(variables('XMLString'),'}'),add(lastindexof(variables('XMLString'),'SessionId'),13)))为变量赋值SessionId . enter image description hereSessionId 的值如下:
    enter image description here

关于xml - 如何使用 Azure 数据工厂将 XML 元素读入变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67277408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com