如何使 lxml 的解析器保留根元素之外的空格?
我正在使用 lxml 来操作一些现有的 XML 文档,并且我想引入尽可能少的差异噪音。 不幸的是,默认情况下 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支持吗?
I am using lxml to manipulate some existing XML documents, and I want to introduce as little diff noise as possible. Unfortunately by default lxml.etree.XMLParser doesn't preserve whitespace before or after the root element of a document:
>>> 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
Is this possible using lxml? Is it supported by the underlying libxml2?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不知道有哪个 XML 库可以为您做到这一点。 但如果您确实需要这样做,那么使用正则表达式听起来是一个不错的主意。
I don't know of any XML library that will do it for you. But using a regex sounds like a decent idea if you really need to do this.
使用正则表达式捕获空格,并在完成后将其添加回字符串。
Capture the whitespace with a regex and add it back to the string when you're done.