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 時,您都需要附加多于一列
添加回答
舉報