Python xml.dom.minidom怎么用 minidom解析XML

8次阅读

minidom 是 Python 轻量级 DOM 解析器,加载 XML 为内存树结构;用 parse() 和 parseString() 加载文件或字符串;通过 getElementsByTagName、getAttribute、firstChild.data 等操作节点;推荐用 get_text() 安全提取文本;toprettyxml() 生成缩进 XML,需正则清理空行。

Python xml.dom.minidom 怎么用 minidom 解析 XML

minidom 是 Python 标准库 xml.dom 模块中轻量级的 DOM 解析器,适合处理中小型 XML 文件。它把整个 XML 加载进内存,构建成树状结构,方便遍历、查询和修改节点。

加载并解析 XML 字符串或文件

parse() 读取文件,parseString() 解析字符串:

  • from xml.dom.minidom import parse, parseString
  • dom = parse("config.xml") —— 从文件加载
  • dom = parseString("A") —— 从字符串加载

获取元素节点(常用方法)

DOM 中所有标签都是 Element 节点,通过以下方式定位:

  • dom.getElementsByTagName("tagname"):返回 NodeList(类似列表),支持索引访问,如 items[0]
  • dom.documentElement:获取根元素节点
  • node.getAttribute("attr"):获取属性值,如 item.getAttribute("id")
  • node.firstChild.datanode.childNodes[0].data:获取文本内容(注意空白换行也可能是 Text 节点)

安全提取文本内容(避免空节点报错)

直接访问 firstChild.data 容易因无子节点或只有空白节点而报错。推荐封装一个辅助函数:

立即学习 Python 免费学习笔记(深入)”;

def get_text(node):     if node and node.firstChild and node.firstChild.nodeType == node.TEXT_NODE:         return node.firstChild.data.strip()     return ""

然后这样用:name = get_text(dom.getElementsByTagName("name")[0])

生成格式化 XML 字符串(带缩进)

默认 toxml() 不带换行缩进。可用 toprettyxml(),但要注意它会在每行开头加空行:

  • print(dom.toprettyxml(indent="", encoding="utf-8").decode("utf-8"))
  • 若要清除多余空行,可后处理:re.sub(r'^s*n', '', dom.toprettyxml(……), flags=re.MULTILINE)

星耀云
版权声明:本站原创文章,由 星耀云 2026-01-01发表,共计1139字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources