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>
使用迷你王国。
我正在尝试从 name
、label
和 field
元素中提取文本:
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 世界中是否有可用的模型。
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>
使用迷你王国。
我正在尝试从 name
、label
和 field
元素中提取文本:
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 世界中是否有可用的模型。