在Python中使用minidom查找XML元素的特定路径
根据,我正在使用做一些非常基本的XML遍历,只读 让我困惑的是,为什么它的在Python中使用minidom查找XML元素的特定路径,python,xml,dom,Python,Xml,Dom,根据,我正在使用做一些非常基本的XML遍历,只读 让我困惑的是,为什么它的getElementsByTagName在没有明确提供确切路径的情况下查找多个层次结构级别的节点 XML: 印刷品: item1 item2 item3 item4 item5 item6 item7 item8 困扰我的是,它隐式地在data->items以及data->secondSetOfItems下找到名为item的标记 如何使其遵循显式路径并仅提取两个类别之一下的项目?例如,在data->secondSetOf
getElementsByTagName
在没有明确提供确切路径的情况下查找多个层次结构级别的节点
XML:
印刷品:
item1
item2
item3
item4
item5
item6
item7
item8
困扰我的是,它隐式地在data->items
以及data->secondSetOfItems
下找到名为item
的标记
如何使其遵循显式路径并仅提取两个类别之一下的项目?例如,在data->secondSetOfItems
下:
item5
item6
item7
item8
这是声明的行为 搜索具有特定元素类型名称的所有子代(直接子代、子代等) 有些人在上面写了一个“过滤器”,参见
在我看来MIDIOM太简单了,考虑使用LXXXPath:
tree.xpath('//secondSetOfItems/item/@name')
或芬德尔:
如果要从特定类别中获取项目,可以首先抓取父元素 例如: 代码:
xmldoc = minidom.parse('sampleXML.xml')
#Grab the first occurence of the "secondSetOfItems" element
second_items = xmldoc.getElementsByTagName("secondSetOfItems")[0]
item_list = second_items.getElementsByTagName("item")
for item in item_list:
print item.attributes['name'].value
item5
item6
item7
item8
输出:
xmldoc = minidom.parse('sampleXML.xml')
#Grab the first occurence of the "secondSetOfItems" element
second_items = xmldoc.getElementsByTagName("secondSetOfItems")[0]
item_list = second_items.getElementsByTagName("item")
for item in item_list:
print item.attributes['name'].value
item5
item6
item7
item8
非常感谢。还有一个问题:假设我在item标签
XYZ
中有一个值。我如何阅读XYZ?我尝试了item.nodeValue
没有可用的VRMND,它应该是item.childNodes[0]。nodeValue
item5
item6
item7
item8