Python - 使用 minidom 解析时理解 XML 结构

Python - understanding XML structure when parsing with minidom

Python 和 XML 初学者,所以这看起来有点简单,但它挑战了我的假设 我正在尝试像这样解析 XML 结构:

<variable ordernumber="175">
        <name>Some_text</name>
        <label>Label text</label>
        <values>
          <value code="5">Five</value>
          <value code="4">Four</value>
          <value code="3">Three</value>
          <value code="2">Two</value>
          <value code="1">One</value>
          <value code="0">Zero</value>
        </values>
      </variable>

使用迷你王国。

我正在尝试从 namelabelfield 元素中提取文本:

import xml.dom.minidom as md
dom = md.parse(input_file)
root = dom.documentElement
for var in dom.getElementsByTagName('variable'):
    var_name=var.getElementsByTagName('name')[0].firstChild.nodeValue
    var_label=var.getElementsByTagName('label')[0].firstChild.nodeValue
    var_values_list=var.getElementsByTagName('value')
    for var_value in var_values_list:
        print (var_name,var_label,var_values)

这工作正常,但有一件事我不明白: 为什么不能像这样得到 var_name:

var_name=var.getElementsByTagName('name')[0].nodeValue

为什么 'Some_text'<name\> 的 child?为什么不是 nodeValue ?在这种情况下 nodeValue 是什么? 当然,<label\><value\>

也是一样

这是个糟糕的设计,但在 DOM 中,一个元素的节点值 属性 为空。参见示例 https://www.w3schools.com/jsref/prop_node_nodevalue.asp

与 DOM 相比,XML 有许多设计更好、更现代的树模型,但我不知道 Python 世界中是否有可用的模型。