-1

我编写了一个 Python 脚本来创建一些 XML,但我没有找到在 Python 中编辑标题的方法。

基本上,而不是将其作为我的标题:

<?xml version="1.0" ?>

我需要这个:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

我尽我所能对此进行了调查,但发现无法从 Python 中添加独立状态。所以我想我必须在创建文件后检查文件,然后替换文本。我在几个地方读到了我应该远离使用 readlines() 的地方,因为它可能会破坏 XML 格式。

目前,我必须执行此操作的代码(我从另一篇关于使用 Python 编辑 XML 的 Stackoverflow 帖子中获得)是:

doc = parse('file.xml')
elem = doc.find('xml version="1.0"')
elem.text = 'xml version="1.0" encoding="UTF-8" standalone="no"'

这为我提供了一个 KeyError。我尝试调试它无济于事,这让我相信也许 XML 标题不应该以这种方式进行编辑。或者我的代码是错误的。

如果有人好奇(或者奇迹般地知道如何将独立状态插入 Python 代码),这是我编写 xml 文件的代码:

with open('file.xml', 'w') as f:
    f.write(doc.toprettyxml(indent='                '))

有些人不喜欢“toprettyxml”,但以我相对基础的水平,这似乎是最好的选择。

无论如何,如果有人可以提供一些建议或见解,我将非常感激。

4

1 回答 1

0

xml.etreeAPI 没有为您提供在 XML 声明中写出standalone属性的任何选项。

您可能想改用该lxml;它使用相同的 ElementTree API,但提供了对输出的更多控制。tostring()支持一个standalone标志:

from lxml import etree

etree.tostring(doc, pretty_print=True, standalone=False)

或 use .write(),它支持相同的选项:

doc.write(outputfile, pretty_print=True, standalone=False)
于 2012-12-21T16:45:24.173 回答