如何在XSLT中获取JSON字段的值?

时间:2015-09-17 09:49:36

标签: json xslt xpath xslt-2.0

我想通过xslt获取以下文字。 输入是 -

{
   "Contact Id":"3333333333",
   "Contact No":"9811430620",
   "Email Id":"abhishek.jain@homecredit.co.in",
   "Last Name":"Jain","First Name":"Abhishek"
}

现在我只需要输出中的这个文字:3333333333

请告诉我如何在xslt中做。

由于

2 个答案:

答案 0 :(得分:2)

输入不是XML而是JSON,所以你可能需要使用像Saxon 9.6 PE或EE这样的XSLT 3.0处理器和json-to-xml功能

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
    <xsl:output method="text" />

    <xsl:template match="json">
        <xsl:value-of select="json-to-xml(.)//*[@key = 'Contact Id']"/>
    </xsl:template>
</xsl:transform>

假设您的输入实际上在XML输入元素<json>{"Contact Id":"3333333333","Contact No":"9811430620","Email Id":"abhishek.jain@homecredit.co.in","Last Name":"Jain","First Name":"Abhishek"}</json>中包含JSON,否则,您需要使用json-to-xml(unparsed-text('file.json'))//*[@key = 'Contact Id']

答案 1 :(得分:2)

这看起来像JSON数据。您将问题标记为XSLT 2.0,但如果您的处理器能够使用,则可以使用parse-json()获取地图,或json-to-xml()将模板应用于该地图。

除此之外,使用正则表达式会有点难看,例如:

<xsl:value-of select="replace(., '.*Contact Id.:.(\d+).*', '$1')" />