You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SaxonC-HE Python API创建带字符串值的XDM字典时失败

解决SaxonC中创建字符串值XDM映射的NumberFormatException问题

问题根源

你遇到的NumberFormatException是因为create_xdm_dict方法内部逻辑默认会尝试将字典值转换为数值类型(如Double),即使你显式创建了XDM字符串值,该方法仍会触发不必要的类型转换,导致字符串"jack"无法解析为数字而报错。

正确实现方式

不需要使用create_xdm_dict,直接通过PySaxonProcessor.make_map()方法即可创建符合要求的XDM映射,无论是传入Python原生字符串,还是显式创建的XdmAtomicValue(字符串类型)都可以:

from saxonche import *

with PySaxonProcessor(license=False) as saxonproc:
    # 方式1:直接使用Python原生字符串构建字典
    str_dict = {"a": "jack", "b": "jill"}
    xdm_map = saxonproc.make_map(str_dict)

    # 方式2:显式创建XDM字符串值(适用于需要精确控制XDM类型的场景)
    xdm_str_dict = {
        "a": saxonproc.make_string_value("jack"),
        "b": saxonproc.make_string_value("jill")
    }
    xdm_map_explicit = saxonproc.make_map(xdm_str_dict)

验证与使用

生成的xdm_map或xdm_map_explicit可以直接作为参数传入XSLT转换,完全匹配XSL样式表中map(xs:string, xs:string)类型的myMapParam参数要求,不会再触发类型转换错误。

内容的提问来源于stack exchange,提问作者Tony P.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 13:05:03