如何入门使用Python ElementTree模块进行XML操作?
- 内容介绍
- 相关推荐
本文共计932个文字,预计阅读时间需要4分钟。
不是它不能,而是默认忽略命名空间空间 — 所有的带有 xmlns 或前缀(如 ns:tag)的节点,在未明确声明时会被当作普通标签处理,find() 和 findall() 会直接找不到。
- 必须把命名空间映射成字典,例如:
{'ns': 'http://example.com/ns'} - 所有 XPath 查询中,标签名前要加前缀:
'.//ns:item',不能写'.//item' - 用
root.findall('.//ns:item', ns_map),其中ns_map是命名空间字典 - 如果 XML 中是默认命名空间(
xmlns="http://..."),前缀不能为空字符串,得设一个占位符,比如{'d': 'http://...'},再查'.//d:tag'
ElementTree.parse() 报 ParseError: not well-formed 怎么办?
常见于文件含 BOM、编码不匹配或混入控制字符。Python 3 默认按 UTF-8 解析,但 Windows 记事本保存的 XML 常带 UTF-8 BOM,而 parse() 不自动跳过。
本文共计932个文字,预计阅读时间需要4分钟。
不是它不能,而是默认忽略命名空间空间 — 所有的带有 xmlns 或前缀(如 ns:tag)的节点,在未明确声明时会被当作普通标签处理,find() 和 findall() 会直接找不到。
- 必须把命名空间映射成字典,例如:
{'ns': 'http://example.com/ns'} - 所有 XPath 查询中,标签名前要加前缀:
'.//ns:item',不能写'.//item' - 用
root.findall('.//ns:item', ns_map),其中ns_map是命名空间字典 - 如果 XML 中是默认命名空间(
xmlns="http://..."),前缀不能为空字符串,得设一个占位符,比如{'d': 'http://...'},再查'.//d:tag'
ElementTree.parse() 报 ParseError: not well-formed 怎么办?
常见于文件含 BOM、编码不匹配或混入控制字符。Python 3 默认按 UTF-8 解析,但 Windows 记事本保存的 XML 常带 UTF-8 BOM,而 parse() 不自动跳过。

