使用 XSLT 从 JSON 输出中提取特定字段
Posted
技术标签:
【中文标题】使用 XSLT 从 JSON 输出中提取特定字段【英文标题】:Extract a specific field from JSON output using XSLT 【发布时间】: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 支持? 【参考方案1】:假设您的输入实际上包含 有效 JSON,格式为:
<INPUT>"data":"abc1234","format":"text"</INPUT>
你可以这样做:
<xsl:template match="INPUT">
<OUTPUT>
<xsl:value-of select="substring-before(substring-after(., '"data":"'), '"')"/>
</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。例子不是,你用:
分隔属性,而不是,
。
【讨论】:
以上是关于使用 XSLT 从 JSON 输出中提取特定字段的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 从 Twitter 流 API 中提取特定的 JSON 字段
使用 XSLT 从同一输入 XML 中提取的最新日期更新输入 XML
从 JSON 文件中提取字段,将其与纯文本文件匹配值进行比较,并从 JSON 文件中提取特定字段
如何通过使用 node.js 从实时 json 数据中提取特定字段来创建新的单个 json 对象