【问题标题】:CA API Gateway XML List Response to JsonCA API Gateway XML 列表对 Json 的响应
【发布时间】:2021-08-17 14:41:47
【问题描述】:

我在 CA API Gateway 中将我的响应 XML 转换为 Json 时遇到问题。

我的xml喜欢;

           <Result>
               <MetaDataItem>
                  <ComponentType>TEXTBOX</ComponentType>
                  <DataType>System.String</DataType>
               </MetaDataItem>
               <MetaDataItem>
                  <ComponentType>DATETIME</ComponentType>
                  <DataType>System.String</DataType>
               </MetaDataItem>
           <Result>

当我尝试使用 xpath 获取内部子元素时; 回复是这样的;

{
    "result":{
        "resultCode":"1000",
        "resultMessage":""
        "result":"TEXTBOXSystem.StringDATETIMESystem.String,
     }
}

它只是将第一个 MetaDataItems 值作为字符串返回。我无法将此结果字符串转换为 json。

我想要像 json 这样的结果;

"MetaDataItem": [
            {
                "ComponentType":"TEXTBOX",
                "DataType" : "System.String"
            }
           ,{
                "ComponentType":"DATETIME",
                "DataType" : "System.String"
            }
            
        ]   

有人知道 CA API Gateway XML 到 JSON 转换的想法吗?

【问题讨论】:

  • 那么在“XPath 版本”选择框中还可以选择哪些其他的 XPath 版本呢?
  • @MartinHonnen 选择的 xpath 版本是 1.0 。选择框有 1.02.0 选项。

标签: json xml xslt xpath api-gateway


【解决方案1】:

我不知道那个环境,但如果你只有 XPath 2.0 那么

concat('[', 
       string-join(
           for $item in //MetaDataItem 
           return concat('{', string-join(for $c in $item/* return concat('"', local-name($c), '":"', $c ,'"'), ', '), '}'), ', '), ']')

因为 XPath 2.0 表达式应该给出字符串 [{"ComponentType":"TEXTBOX", "DataType":"System.String"}, {"ComponentType":"DATETIME", "DataType":"System.String"}],也许如果您另外将“变量前缀”设置为 MetaDataItem,结果会更接近您想要的。

【讨论】:

  • 谢谢!!这就是我要找的:)
猜你喜欢
  • 2016-12-14
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 2017-07-28
  • 2022-11-10
相关资源
最近更新 更多