如何在XSLT中从JSON中提取数据?

时间:2016-10-19 13:07:33

标签: json xml xslt

我在XSLT中调用了一个rest服务,并获得了JSON响应。

如何使用XSLT从该JSON响应中提取数据。下面是用于调用其余服务的XSLT代码,并且还提供了JSON响应。从JSON响应中,我需要提取Cookie1Cookie2Cookie3的值。

XSLT

<xsl:variable name="result1"> 
   <dp:url-open target="{$abc}" response="binaryNode" 
                resolve-mode="xml" data-type="xml" http-method="post">
   </dp:url-open>
</xsl:variable>

<xsl:variable name="json">
  <xsl:value-of select="dp:decode(dp:binary-encode($result1/result/binary/node()), 
                                  'base-64' )" />
</xsl:variable>

JSON响应:

   {"mapData": {
       "Cookie1": "KlzpP965iBw==",
       "status": "True",
       "Cookie2": "DDGT8mcsuzdMNNQ=",
       "Cookie3": "VERSION_4~mPpYUDcZnoJ0Z"
   }}

请使用XSLT告诉我如何执行此操作。

2 个答案:

答案 0 :(得分:2)

XSLT 3.0 / XPath 3.1

使用fn:parse-json()返回map,然后map:get()返回感兴趣的值。

答案 1 :(得分:0)

<xsl:variable name="ValidationResponse">
<dp:url-open target="{$url}" 
             response="responsecode-binary" http-method="GET" 
             content-type="application/x-www-form-urlencoded" 
             ssl-proxy="abc" http-headers="$headerValues" />
</xsl:variable> 

<dp:set-variable name="'var://context/sample/valResp'" 
                 value="normalize-space($ValidationResponse)"/>

然后使用convert query params或其他XSLT转换输出以获得所需的输出。