1 回答

TA贡献1829条经验 获得超13个赞
root = tree.getroot()
def get_uri(elem):
if elem.tag[0] == "{":
uri, ignore, tag = elem.tag[1:].partition("}")
return f"{{{uri}}}"
return ""
uri = get_uri(root)
def recurse(root):
for child in root:
recurse(child)
print(child.tag)
for event in root.findall(f'{uri}alarm'):
event_data = []
event_id = event.find(f'{uri}eventType')
if event_id != None :
event_id = event_id.text
event_data.append(event_id)
probableCause = event.find(f'{uri}probableCause')
if probableCause != None:
probableCause = probableCause.text
event_data.append(probableCause)
severities = event.find(f'{uir}severities')
if severities:
severity_data = ','.join([sv.text for sv in severities.findall('f{uri}severity')])
event_data.append(severity_data)
else:
event_data.append("")
csvwriter.writerow(event_data)
recurse(root)
需要注意的事项:
使用递归遍历 XML
print 语句将显示您的每个标签都有来自根目录中 xmlns 属性的 {urn:nortel:namespaces:mcp:faults} ,这可能是最让您困惑的地方。我添加了一个函数来获取此“uri”文本并将其添加到每个标签前面。
每次写入 csv 时,您都需要附加多于一列
添加回答
举报