这是我第一次尝试使用Python。我通常会坚持使用bash,但是Minidom似乎完美地满足了我对XML解析的需求,所以我尝试一下。
我想不出的第一个问题是,解析文件时“grep-v”的等价物是什么?
我拖动的每个对象都以一个特定的标记开始。如果,在所述标记中,我想根据嵌入在标记中的某个字符串排除一行数据,我该如何实现?
我现在得到的伪代码(不排除):

mainTag = xml.getElementsByTagName("network_object")
name = network_object.getElementsByTagName("Name")[0].firstChild.data

我想查看数据输出的所有“name”字段,但包含“cluster”的字符串除外。因为我将在网络对象上进行多次搜索,我相信我需要在那个级别上进行搜索,但不知道如何进行。
Etree给了我很多问题,你能给我一些逻辑来处理minidom吗?
这显然行不通:
name = network_object.getElementsByTagName("Name")[0].firstChild.data
if name is not 'cluster' in name
continue

最佳答案

首先,远离minidom模块。如果您已经从其他语言中了解了DOM,并且确实不想学习任何其他API,那么Minidom是很好的。在标准库中,有更简单的选择。我会用ElementTree API代替。
通常只循环匹配项,然后跳过要排除的匹配项:

from xml.etree import ElementTree

tree = ElementTree.parse(somefile)

for name in tree.findall('.//network_object//Name'):
    if name.text is not None and 'cluster' in name.text:
        continue  # skip this one

07-25 21:18