Я пытаюсь читать, изменять и писать файл XML с помощью lxml 4.1.1 в Python 2.7.6.
Мой код:
import lxml.etree as et
fn_xml_in = 'in.xml'
parser = et.XMLParser(remove_blank_text=True)
xml_doc = et.parse(fn_xml_in, parser)
xml_doc.getroot().find('b').append(et.Element('c'))
xml_doc.write('out.xml', method='html', pretty_print=True)
Входной файл in.xml
выглядит так:
<a>
<b/>
</a>
И созданный выходной файл out.xml
:
<a>
<b><c></c></b>
</a>
Или когда я устанавливаю remove_blank_text=True
:
<a><b><c></c></b></a>
Я ожидал, что lxml будет вставлять разрывы строк и отступы внутри элемента b
:
<a>
<b>
<c></c>
</b>
</a>
Как я могу этого добиться?
Я пробовал некоторые оболочки tidy
lib, но они, похоже, специализируются на HTML, а не на XML.
Я также пытался добавить символы новой строки как b
tail
, но тогда даже отступ нарушается.
Изменить: мне нужно, чтобы элемент c
оставался разделенным в открывающем и закрывающем теге: <c></c>
. Вот почему я использую method='HTML'
в примере.
method='html'
или используйтеmethod='xml'
. - person mzjn   schedule 13.12.2017