【问题标题】:python libxml2 serialization problempython libxml2序列化问题
【发布时间】:2011-10-29 07:50:48
【问题描述】:

我在尝试在 python 中序列化 libxml2 对象时遇到了一些问题。

特别是,如果我运行:

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

其中 cdoc 是之前创建的 libxml2 文档,

我有这样的东西:(在 Mac 上 - 端口 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')

没有缩进选项,但输出格式不是很可读。

有没有办法解决输出的尴尬缩进?

【问题讨论】:

  • 两个平台的libxml2版本是多少?
  • 在 mac 上是 libxml2_2.7.8 和 py25-libxml2_2.6.21;在 CentOS 2_2.6.26
  • 好的...我认为问题出在 libxml2 的版本上...我在 Centos6 上尝试了 libxml2 2.7.something 并且工作正常。感谢您的建议。

标签: python serialization xml-serialization libxml2


【解决方案1】:

我刚刚注意到我正在跑步:

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

而不是

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

由于某些原因,在 libxml2 2.6 上,文本节点也会缩进,而在 libxml2 2.7 上则不会。

【讨论】:

    【解决方案2】:

    这可能是不同机器上的 libxml2 版本之间的行为差​​异。尝试将最旧的版本升级到较新的版本(或更新的版本)。

    【讨论】:

    • 将对上述问题的评论转换为答案,以便将问题标记为已回答。
    猜你喜欢
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多