强制ElementTree使用结束标记

时间:2018-10-09 09:03:12

标签: python xml string python-2.7 elementtree

代替:

<child name="George"/>

在XML文件中,我需要具备:

<child name="George"></child>

一个丑陋的解决方法是将空格写为文本(不是空字符串,因为它将忽略它):

import xml.etree.ElementTree as ET
ch = ET.SubElement(parent, 'child')
ch.set('name', 'George')
ch.text = ' '

然后,由于我使用的是Python 2.7,因此我读了Python etree control empty tag format,并尝试了html方法,如下所示:

ch = ET.tostring(ET.fromstring(ch), method='html')

但这给了:

TypeError: Parse() argument 1 must be string or read-only buffer, not Element

,我不确定该如何解决。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果您这样操作,它将在2.7中正常运行:

from xml.etree.ElementTree import Element, SubElement, tostring

parent = Element('parent')
ch = SubElement(parent, 'child')
ch.set('name', 'George')

print tostring(parent, method='html')
#<parent><child name="George"></child></parent>

print tostring(child, method='html')
#<child name="George"></child>