使用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.
相关产品推荐
相关产品推荐

