在Python的元素树中设置Bool

在Python的元素树中设置Bool,python,xml,rest,python-2.7,python-3.x,Python,Xml,Rest,Python 2.7,Python 3.x,我想创建一个REST请求参数,在该参数中,我使用Python中的元素树传递bool。有人能建议我如何在元素树中传递bool吗?下面抛出一个错误 root = ET.Element('dummy_create') ET.SubElement(root, 'name').text = name ET.SubElement(root, 'isEvaluate').text = True return ET.tostring(root) 我希望我的评估是一个傻瓜。有人能建议怎么

我想创建一个REST请求参数,在该参数中,我使用Python中的元素树传递bool。有人能建议我如何在元素树中传递bool吗?下面抛出一个错误

root = ET.Element('dummy_create')
    ET.SubElement(root, 'name').text = name
    ET.SubElement(root, 'isEvaluate').text = True
    return ET.tostring(root)
我希望我的评估是一个傻瓜。有人能建议怎么做吗。我现在得到以下错误:

File "/usr/lib64/python2.6/xml/etree/ElementTree.py", line 777, in _raise_serialization_error
"cannot serialize %r (type %s)" % (text, type(text).__name__)TypeError: cannot serialize True (type bool)

谢谢

只需将其作为
字符串传递即可:

name = 'Hello' # dummy name
root = ET.Element('dummy_create')
ET.SubElement(root, 'name').text = name
# try passing in 'true' rather than 'True'
ET.SubElement(root, 'isEvaluate').text = 'true'

ET.tostring(root)
'<dummy_create><name>Hello</name><isEvaluate>true</isEvaluate></dummy_create>'
name='Hello'#虚拟名称
root=ET.Element('dummy_create')
ET.SubElement(根,'name')。text=name
#尝试输入“true”而不是“true”
ET.SubElement(根'isEvaluate')。text='true'
ET.tostring(根)
“Hellotrue”

要绘制其中一个变体:

def encode_bool(value):
    if value:
        return 'yes'
    return ''
然后

ET.SubElement(root, 'isEvaluate').text = encode_bool(True)

这种方式标记看起来像
yes
。这将在解析后为您提供字符串
'yes'
或空字符串
'
,这些字符串在布尔上下文中是
True
False

可以提出很多建议,但您最好在如何在XML中表示布尔值方面与自己达成一致(可以是1/0或是/否或只是/)。之后,您可以在程序中对该标记进行编码/解码,或者扩展ET以在写入/解析时为您执行该操作。感谢您的回复。请按照您的建议提供一个示例代码,这将有助于更好地理解它。感谢您的回复。此xml将传递给REST服务。isEvaluated应为bool。当我作为字符串传递时服务器端its失败,因为期望值为真或假。您能建议如何在ET中将其作为真或假传递吗?@user3062513,您能尝试传递
1
?@user3062513,我已经更新了我的答案,尝试传递
true
,而在XML模式规范中,布尔值要么是
true
要么是
false
,而不是
True
False
类似于PythonThanks中的回复。当我将其设置为string时,在服务器端它不会作为bool接收。在服务器端有一个REST服务(jersey)它应该自动填充参数。此xml作为参数传递给REST服务中的方法。您能建议解决此问题的可能方法吗?