Używam xmltodict do parsowania konfiguracji XML. XML ma struktury, w których element może się pojawić w przypadkach od 1 do n, przy czym oba są ważne:Uchwyt od 1 do n elementów
<items>
<item-ref>abc</item-ref>
</items>
i
<items>
<item-ref>abc</item-ref>
<item-ref>dca</item-ref>
<item-ref>abb</item-ref>
</items>
mi analizę składniową to z xmltodict następująco:
document['items']['item-ref']
i zwraca pojedynczy kod Unicode lub listę (w zależności od znalezionych elementów), więc zawsze muszę dodać dodatkową kontrolę, aby upewnić się, czy potrzebuję obsługi listy lub ciągu znaków:
if isinstance(document['items']['item-ref'], list):
my_var = document['items']['item-ref']
else:
my_var = [document['items']['item-ref']] #create list manually
Czy istnieje lepszy/prostszy/bardziej elegancki sposób na ich obsługę?
wpadł na ten sam problem i sprawdzał wszystko:) – dm03514
Jeśli chcesz, aby twoje ręce były trochę brudne, możesz załatać 'xmltodict.py'. Istnieje metoda "_DictSAXHandler.push_data", która określa, które elementy zamienić na listy. Możesz zmienić argumenty, abyś mógł przekazać analizatorowi zestaw elementów, aby * zawsze * zamienił się w listę. –