У меня есть (старый) инструмент, который не понимает самозакрывающиеся теги, например <STATUS/>
. Итак, нам нужно сериализовать наши XML-файлы с открытыми/закрытыми тегами следующим образом: <STATUS></STATUS>
.Сохранить lxml от создания самозакрывающихся тегов
В настоящее время у меня есть:
>>> from lxml import etree
>>> para = """<ERROR>The status is <STATUS></STATUS>.</ERROR>"""
>>> tree = etree.XML(para)
>>> etree.tostring(tree)
'<ERROR>The status is <STATUS/>.</ERROR>'
Как я могу сериализовать с открытыми/закрытыми тегами?
<ERROR>The status is <STATUS></STATUS>.</ERROR>
Решение
Предоставлено wildwilhelm, below:
>>> from lxml import etree
>>> para = """<ERROR>The status is <STATUS></STATUS>.</ERROR>"""
>>> tree = etree.XML(para)
>>> for status_elem in tree.xpath("//STATUS[string() = '']"):
... status_elem.text = ""
>>> etree.tostring(tree)
'<ERROR>The status is <STATUS></STATUS>.</ERROR>'
Я помню этот трюк, спасибо. Я обновляю свой вопрос ... –