删除XML字符串中的空格

删除XML字符串中的空格,第1张

删除XML字符串中的空格

最简单的解决方案可能是使用lxml,您可以在其中设置解析器选项以忽略元素之间的空白:

>>> from lxml import etree>>> parser = etree.XMLParser(remove_blank_text=True)>>> xml_str = '''<root>>>>     <head></head>>>>     <content></content>>>> </root>'''>>> elem = etree.XML(xml_str, parser=parser)>>> print etree.tostring(elem)<root><head/><content/></root>

这可能足以满足您的需求,但是有些警告是安全的:

这只会删除元素之间的空格节点,并尽量不要删除内容混合的元素内部的空格节点:

>>> elem = etree.XML('<p> spam <a>ham</a> <a>eggs</a></p>', parser=parser)>>> print etree.tostring(elem)<p> spam <a>ham</a> <a>eggs</a></p>

textnode的前导或尾随空格将不会被删除。但是,在某些情况下,它将仍然从混合内容中删除空白节点:如果解析器尚未在该级别遇到非空白节点。

>>> elem = etree.XML('<p><a> ham</a> <a>eggs</a></p>', parser=parser)>>> print etree.tostring(elem)<p><a> ham</a><a>eggs</a></p>

如果您不想这样做,可以使用

xml:space="preserve"
,它将受到尊重。另一种选择是使用dtd和use
etree.XMLParser(load_dtd=True)
,其中解析器将使用dtd来确定哪些空白节点有效或无效。

除此之外,您将必须编写自己的代码以删除不需要的空格(迭代后代,并在适当的情况下设置

.text
.tail
包含仅空格
None
或为空字符串的属性)



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5601694.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存