проблема с сериализацией в python libxml2

1

У меня возникают некоторые проблемы при попытке сериализации объекта 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')

без опции для отступов, но формат вывода не очень читаем.

Есть ли способ исправить неудобный отступ вывода?

  • 0
    Какая версия libxml2 на обеих платформах?
  • 0
    На Mac это libxml2_2.7.8 и py25-libxml2_2.6.21; на CentOS 2_2.6.26
Показать ещё 1 комментарий
Теги:
serialization
libxml2
xml-serialization

2 ответа

1
Лучший ответ

Я просто заметил, что я бегу:

xmlstring = cdoc.serialize('UTF-8', 2) 

и не

xmlstring = cdoc.serialize('UTF-8', 1) 

Это, по некоторым причинам, на libxml2 2.6 indents также текстовый узел и на libxml2 2.7 нет.

0

Это может быть разница в поведении между версией libxml2 на разных машинах. Попробуйте обновить самую старую версию до более новой версии (или более новой).

  • 0
    преобразование комментария по вышеуказанному вопросу в ответ, чтобы вопрос можно было пометить как ответивший.
  • 0
    Обновление CENTOS5 - это головная боль! В любом случае спасибо за ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню