使用 ElementTree 模块在 Python 中处理 XML 文件时,可能需要定位元素,无论其名称空间如何。但是,在处理包含命名空间的 XML 文件时,默认行为是在搜索元素时考虑命名空间前缀。这可能会很不方便,尤其是在处理大量命名空间时。
要解决此问题,可以修改 XML 文档以消除命名空间,但这可能并不总是可行。或者,可以解析 XML 文档并修改结果中的标签以忽略命名空间:
<code class="python">from io import StringIO # Python 2: from StringIO import StringIO import xml.etree.ElementTree as ET # Use iterparse to retain lazy parsing it = ET.iterparse(StringIO(xml)) for _, el in it: _, _, el.tag = el.tag.rpartition('}') # Strip namespace root = it.root</code>
这种方法可以轻松处理多个命名空间,而无需在每个标签前面显式添加它们。
以上是以下是一些适合您提供的 Python ElementTree 代码片段的基于问题的标题,重点关注忽略名称空间的问题: * 如何在没有命名空间的情况下查找 XML 文件中的元素的详细内容。更多信息请关注PHP中文网其他相关文章!