Let's assume that I have an XML like this:
<Rules>
<Set Parameter="4" To="90">
<If Parameter="1087" EqualsTo="90" />
</Set>
<Set Parameter="5" To="-5">
<If Parameter="1087" EqualsTo="87" />
</Set>
<Set Parameter="6" To="[-5,23;36,7;58,7;78,8;94,47]">
<If Parameter="1087" EqualsTo="87" />
</Set>
<Set Parameter="14" To="7,5" />
<Set Parameter="15" To="-7,5" />
<Set Parameter="16" To="0,5" />
<Set Parameter="17" To="3" />
<Set Parameter="18" To="-3" />
<If Parameter="1087" EqualsTo="87" />
</Set>
</Rules>
I would like to read this XML file and convert it to a pandas DataFrame:
Parameter<Set> Parameter<If>
4 1087
5 1087
6 1087
14 1087
15 1087
16 1087
17 1087
18 1087
This is what I already tried, but I am getting some errors and probably there is a more efficient way of doing this task:
import xml.etree.ElementTree as ET
import pandas as pd
import os
def getMetrics(file_name):
path="C:\\Users\Z003Z9CF\Downloads"
os.chdir(path)
tree = ET.parse('sample1.xml')
print(tree)
root = tree.getroot()
print(root.tag)
result = []
for setnode in root.iter('Set'):
node = setnode.attrib["Parameter"]
for ifnode in setnode:
if "Parameter" in ifnode.attrib:
result.append(dict(node=node, parameter=ifnode.attrib.get("Parameter")))
return result
df = pd.DataFrame(getMetrics('sample1.xml'), columns["Parameter","Parameter"])
print(df)