Web Services 在复制活动(数据工厂)中有一种方法可以使用XML返回来获取API,该API返回多个根元素

ymdaylpp  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(94)

我需要使用数据工厂摄取一个带有XML返回的Web服务。但是此Web服务的返回没有根元素。

范例:

<?xml version="1.0" encoding="iso-8859-1"?>
<resposta>
   <identificacao>
        <id>215874</id>
   </identificacao>
    <carga>
        <valor>525.922,27</valor>
        <descricao>Confeccoes</descricao>
        <operacao>Distribuicao</operacao>
    </carga>
</resposta>
<resposta>
    <identificacao>
        <id>258741</id>
    </identificacao>
    <carga>
        <valor>200.235,01</valor>
        <descricao>Alimento</descricao>
        <operacao>Distribuicao</operacao>
    </carga>
</resposta>

当像这样将数据工厂copy activity与Web服务的return一起使用时,我会收到以下消息:

Error code 21374

Details
Input XML file 'filename' is invalid with parsing error 'There are multiple root elements. Line 1, position 3452.'. There are multiple root elements. Line 1, position 3452. Activity ID: activity_id

我在源选项卡的copy activity中的设置如下:

{
     "name": "Copy data",
     "type": "Copy",
     "dependsOn": [],
     "policy": {
                "timeout": "7.00:00:00",
                "retry": 3,
                "retryIntervalInSeconds": 45,
                "secureOutput": false,
                "secureInput": false
               },
                "userProperties": [],
                "typeProperties": {
                   "source": {
                      "type": "XmlSource",
                          "storeSettings": {
                               "type": "HttpReadSettings",
                               "maxConcurrentConnections": 1,
                               "requestMethod": "POST",
                               "requestBody": {
                               "value": "@{replace(\n    replace(\nstring('<request><metodo>OBTER_POSICOES_DET</metodo><data_ini>dataini</data_ini><data_fin>datafin</data_fin></request>'),\n'dataini', variables('data_ini')),\n'datafin', variables('data_fin'))}\n",
                               "type": "Expression"
                          },
                          "requestTimeout": "00:01:40"
                        },
                          "formatSettings": {
                               "type": "XmlReadSettings",
                               "validationMode": "none",
                               "detectDataType": true,
                               "namespaces": true
                         }
},...

我目前正在执行以下操作。

创建一个带有Id的列表,将笔记本输出传递给ForEach,并为每个Id执行一个请求。

优点:它解决了我的问题,所以我可以得到所有的““
缺点:每天进行摄入的时间和金钱成本很高。

我期望的是能够运行复制数据并从多个Id返回““。

4ngedf3f

4ngedf3f1#

根据官方文档,作为REST连接器仅支持JSON中的响应。
REST不支持XML响应。
您可以在评论中尝试JimGarisson建议方法

相关问题