首页 > 解决方案 > xslt 3.0 xml 转 JSON 数字格式

问题描述

我想将以下 xml 转换为 JSON:

<?xml version='1.0' encoding='utf-8'?>
<map xmlns="http://www.w3.org/2005/xpath-functions">
    <array key="ids">
        <number>3218087</number>
    </array>
</map>

使用

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">

    <xsl:output method="text" />

    <xsl:template match="/">
        <xsl:value-of select="xml-to-json(.)" />
    </xsl:template>

</xsl:stylesheet>

这给了我:

{"ids":[3.218087E6]}

我需要的是

{"ids":[3218087]}

任何帮助将不胜感激。

干杯普热梅克

标签: jsonnumber-formattingxslt-3.0

解决方案


元素的规范https://www.w3.org/TR/xpath-functions/#func-xml-to-json建议:number

一个名为 number 的元素 $E 会输出 xs:string(xs:double(fn:string($E))) 的字符串结果

我认为,转换xs:string为大于 1000000 的值需要 E 表示法(https://www.w3.org/TR/xpath-functions/#casting-to-string)。

所以我不认为xml-to-json结果可以改变,除非处理器允许一些选项为数字选择不同的格式规则。


推荐阅读