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

Python3中带整数属性的ElementTree元素转字符串报错咨询

问题原因与解决方案

这个错误的核心原因很明确:xml.etree.ElementTree要求元素的属性值必须是字符串类型——XML规范里所有属性本质上都是字符串,而你直接传入了整数类型的属性值,这就导致序列化时触发了错误。

为什么get()能正常工作?

Element.get()方法只是直接从元素的属性字典里取出对应的值,它不会做任何序列化转换——你存的是整数,它就返回整数,自然不会有问题。但ElementTree.tostring()在生成XML字符串时,需要把所有属性值处理成符合XML格式的内容,内部逻辑在处理非字符串属性时会出现类型不兼容的情况,这就是你看到TypeError: argument of type 'int' is not iterable的原因。

示例复现你的问题

假设你的代码大概是这样的:

import xml.etree.ElementTree as ET

# 创建带整数属性的元素
root = ET.Element("root", id=123)  # 这里id是整数类型
print(root.get("id"))  # 正常输出123
ET.tostring(root)  # 触发TypeError

修复方案

把所有属性值都转换成字符串类型再传入就可以了,修改后的代码如下:

import xml.etree.ElementTree as ET

root = ET.Element("root", id=str(123))  # 将整数转为字符串
print(root.get("id"))  # 依然能正常获取到"123"
print(ET.tostring(root).decode())  # 正常序列化输出:<root id="123" />

补充说明

如果你后续需要将属性值转回整数,只需要在get()之后用int()转换即可:

id_value = int(root.get("id"))
print(type(id_value))  # <class 'int'>

内容的提问来源于stack exchange,提问作者Stevoisiak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:21:24