【发布时间】:2020-08-30 04:54:47
【问题描述】:
有没有办法从 xml 中删除命名空间(我知道没有任何名称冲突)?目前我正在为每个已知的命名空间执行此操作:
s = re.sub(r'(<\/?)md:', r'\1', s) # remove md:
s = re.sub(r'\s+xsi:', ' ', s) # remove xsi:
但我想知道是否可以使用更通用的东西。特定 xml 中不允许有 CDATA。
【问题讨论】:
-
你永远不需要它,当你使用 xml 解析器时,你总是可以指定所有必需的命名空间。
-
@WiktorStribiżew 是的,问题是有很多命名空间,并不是我知道的全部(例如,可能会添加未来的命名空间),所以这更通用现在。到目前为止,它每天可以处理约 100 万份文档。
-
您可以使用 XSLT 处理来可靠地实现这一点。只需将身份模板与将
name()s 转换为local-name()s 的模板结合使用。然后从 Python 调用 XSLT。 -
@zx485 这是一个有趣的方法,感谢您的反馈。您能否添加一个答案来说明您将如何做到这一点?