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

时间:2018-01-31 07:49:11

标签: python xml python-2.7 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>

使用minidom。

我正在尝试从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\>的孩子?为什么不是nodeValue?在这种情况下,nodeValue会是什么? 当然,<label\><value\>

也是如此

1 个答案:

答案 0 :(得分:2)

这是糟糕的设计,但在DOM中,元素的nodeValue属性为null。请参阅示例https://www.w3schools.com/jsref/prop_node_nodevalue.asp

有许多设计更好,更现代的XML树模型而不是DOM,但我不知道Python世界中是否有任何可用的东西。