У меня возникают некоторые проблемы при попытке сериализации объекта libxml2 в python.
В частности, если я запускаю:
xmlstring = cdoc.serialize('UTF-8', 1)
где cdoc является документом libxml2, созданным ранее,
У меня есть что-то вроде этого: (на mac-port python 2.5.6)
<?xml version="1.0" encoding="UTF-8"?>
<body>
<journal>
<journal_metadata language="en">
<full_title>Contributions of Lick Observatory</full_title>
<issn media_type="print">1750-0095</issn>
<coden>CoLic</coden>
</journal_metadata>
</journal>
</body>
в то время как на Linux (Centos 5.6 с python 2.4 или 2.6) у меня есть:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<journal>
<journal_metadata language="en">
<full_title>
Contributions of Lick Observatory
</full_title>
<issn media_type="print">
1750-0095
</issn>
<coden>
CoLic
</coden>
</journal_metadata>
</journal>
</body>
В отступе строкового узла существует проблема.
Теперь я мог бы решить это, выполнив:
xmlstring = cdoc.serialize('UTF-8')
без опции для отступов, но формат вывода не очень читаем.
Есть ли способ исправить неудобный отступ вывода?
Я просто заметил, что я бегу:
xmlstring = cdoc.serialize('UTF-8', 2)
и не
xmlstring = cdoc.serialize('UTF-8', 1)
Это, по некоторым причинам, на libxml2 2.6 indents также текстовый узел и на libxml2 2.7 нет.
Это может быть разница в поведении между версией libxml2 на разных машинах. Попробуйте обновить самую старую версию до более новой версии (или более новой).