Pěkný článek.
Já teda používám na parsování knihovnu xml ElementTree. Vyrábím si dataframe pro další použití. Přišlo mi, že je jednoduchá a korektně zpracuje xml soubor třetí strany - zejména ho pak uloží v tom stejném formátu co ho načte. (V kódu níže jsem ponechal následně nevyužité načítání Name. )
import xml.etree.ElementTree as ETree
import numpy as np
import pandas as pd
def Tmp_xmlParse(afile):
#Parsing a XML file to get a TMP coefficients into Dataframe
tree = ETree.ElementTree(file=afile)
root = tree.getroot()
# print(ETree.tostring(root, encoding='utf8').decode('utf8'))
Name = []
Value = []
for x in root.iter('Name'):
Name.append(x.text)
for x in root.iter('Value'):
Value.append(x.text)
Value = np.array(Value).T
TMP = pd.DataFrame(Value).T
Col_Keep = np.array([5,6,8,9,12,13,14,15,16,17])
Col_Keep= Col_Keep-1
TMPa = TMP.iloc[:, Col_Keep].copy()
Colnames=[ "TIS","TIS2","TPVR1","TPVR2","A0","A1","A2","A3","F10","F11"]
TMPa.columns = Colnames
return TMPa # An explicit return statement
Koukám, že code mi sebralo taby formátování pythonu :-(
Takhle vypadá můj xml soubor
<Data>
<DataInfo>
<ComponentClass>Machine</ComponentClass>
<ComponentType>ASpeed</ComponentType>
<Version>2003</Version>
</DataInfo>
<RecordSet>
<Record>
<Field>
<Name>TModel</Name>
<Value>9024</Value>
</Field>
...
<Field>
<Name>F10Coef</Name>
<Value>0.0</Value>
</Field>
<Field>
<Name>F11Coef</Name>
<Value>0.08617260481268542</Value>
</Field>
</Record>
</RecordSet>
</Data>
17. 2. 2022, 08:57 editováno autorem komentáře
Ty odrážky, mezery, zkrátka taby na začátku řádku, co si dělám tabelátorem. Ale hlavní přínos mojeho příspěvku je nacpání hodnot z toho xml přímo do dataframu.
Mě osobně se s těma seznamama, rootama, stromama, childama, atp., dost blbě pracuje, stejně si to musim převýst do nějakýho pole, aby se s tim dalo vůbec nějak počítat.
Tohle mi v tom článku chybí.