Ниже приведен мой скрипт на python. Я пытаюсь проанализировать xml-файл и пытаюсь сохранить значения в pandas dataframe, чтобы впоследствии я мог изменить его на csv-файл.
import os
import pandas as pd
import sys
import requests
import xml.etree.ElementTree as ET
from xml.dom import minidom
tree = ET.parse('schedule.xml')
FILENAME = sys.argv[1]
COL_NAMES = ['PODNAME', 'DC', 'Upgrade']
DF = pd.DataFrame(columns = COL_NAMES)
root = tree.getroot()
def parseXml(DF, filePath):
xmldoc = minidom.parse(filePath)
PODs= xmldoc.getElementsByTagName("POD")
name=[]
DC=[]
deferUpgrade=[]
for pod in PODs:
if pod.hasAttribute("name") and pod.hasAttribute("DC") and pod.hasAttribute("deferUpgrade"):
DF = DF.append({'PODNAME': pod.getAttribute("name"), 'DC': pod.hasAttribute("DC"), 'Upgrade': pod.hasAttribute("deferUpgrade")}, ignore_index=True)
return(DF)
DF = parseXml(DF, FILENAME)
Ниже приведен XML-файл
<Schedule xmlns="http://xmlns.xyz.com/fal/downtimeschedule/V1.0">
<Downtime end="20181020000" id="10001197610_20181027000_201810000" mode="cold" start="20181020000"/>
<PODS>
<POD DC="US - Washing" deferUpgrade="true" name="ABCD" patching="Production" EndTime="20181028040000">
<CR id="12345"/>
<CR id="12346"/>
<CR id="123"/>
</POD>
<POD DC="US - Washing" deferUpgrade="true" name="ABCD-TEST" patching="Production" EndTime="20181028040000">
<CR id="12345"/>
<CR id="12346"/>
<CR id="123"/>
</POD>
</PODS>
когда я запускаю свой скрипт с первым аргументом в качестве имени файла, я получаю вывод ниже
PODNAME DC Upgrade
0 ABCD True True
1 ABCD-TEST True True
Однако я ожидаю вывод ниже.
PODNAME DC Upgrade
0 ABCD US - Washing true
1 ABCD-TEST US - Washing true
Кроме того, я попытался использовать concat для преодоления вышеуказанной проблемы, но получил ниже ouotput
PODNAME DC Upgrade
0 [ABCD] [US - Washing] [true]
1 [ABCD-TEST] [US - Washing] [true]