【问题标题】:Extract a specific field from JSON output using XSLT使用 XSLT 从 JSON 输出中提取特定字段
【发布时间】:2021-11-09 15:41:23
【问题描述】:

我有一个如下所示的 xml 字段

<INPUT>{"data":"abc1234":"format":"text"}</INPUT>

我只需要从 JSON 字符串中提取数据值,在本例中为 abc1234

我期待以下输出

<OUTPUT>abc1234</OUPUT>

这里有什么帮助吗?

【问题讨论】:

  • 您使用哪种 XSLT 2 处理器?它不可能真的是 XSLT 3 处理器,或者可以像 Saxon 9.7 或更早版本一样更新到 Saxon 9.8、9.9 或 10,以使用 XSLT 3 中的 JSON 支持?

标签: xslt xslt-2.0


【解决方案1】:

假设您的输入实际上包含 有效 JSON,格式为:

<INPUT>{"data":"abc1234","format":"text"}</INPUT>

你可以这样做:

<xsl:template match="INPUT">
    <OUTPUT>
        <xsl:value-of select="substring-before(substring-after(., '&quot;data&quot;:&quot;'), '&quot;')"/>
    </OUTPUT>
</xsl:template>

但是,如果输入 JSON 的格式发生变化,这将失败。

【讨论】:

    【解决方案2】:

    使用 XSLT 3.0,您可以使用 parse-json() 函数,然后选择 data 属性值:

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">
        <xsl:template match="INPUT">
            <OUTPUT><xsl:value-of select="parse-json(text())?data"/></OUTPUT>          
        </xsl:template>
    </xsl:stylesheet>
    

    如果您的数据是 JSON。例子不是,你用:分隔属性,而不是,

    【讨论】:

      猜你喜欢
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      相关资源
      最近更新 更多