如何使lxml的解析器在根元素之外保留空白?

2024-09-30 00:40:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用lxml操作一些现有的XML文档,我希望引入尽可能少的diff噪声。不幸的是,默认情况下,lxml.etree.XMLParser不在文档根元素之前或之后保留空白:

>>> xml = '\n    <etaoin>shrdlu</etaoin>\n'
>>> lxml.etree.tostring(lxml.etree.fromstring(xml))
'<etaoin>shrdlu</etaoin>'
>>> lxml.etree.tostring(lxml.etree.fromstring(xml)) == xml
False

使用lxml可以吗?底层libxml2是否支持它?在


Tags: 文档元素情况diffxml噪声lxml空白
2条回答

使用regex捕获空白,完成后将其添加回字符串。在

我不知道有什么XML库能为您做到这一点。但是如果你真的需要这样做的话,使用正则表达式听起来是个不错的主意。在

>>> xml = '\n    <etaoin>shrdlu</etaoin>\n'
>>> head, tail = re.findall(r"^\s*|\s*$", xml)[:2]
>>> root = etree.fromstring(xml)
>>> out = head + etree.tostring(root) + tail
>>> out == xml
True

相关问题 更多 >

    热门问题