Заставить ElementTree использовать закрывающий тег - PullRequest
0 голосов
/ 09 октября 2018

Вместо того, чтобы иметь:

<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 пустой формат тега и попробовал метод html, например, так:

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

но это дало:

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

и я не уверен, что я должен сделать, чтобы это исправить.Есть идеи?

1 Ответ

0 голосов
/ 09 октября 2018

Если вы сделаете это так, это должно работать нормально в 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>
...