Я видел эти вопросы, которые задавались ранее, но я не видел ответа, который решал бы десериализацию структуры xml, которую я пытаюсь выполнить. Я пришел из C #, поэтому python очень чужд для меня.
xml:
<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
<channel>
<title>blah blah</title>
<item>
<title>123</title>
<description>Event Status</description>
<a10:link href="xxx" />
<REMITUrgentMarketMessages xmlns="xxxx">
<UMM xmlns="">
<messageId>A000000/messageId>
<event>
<eventStatus>Inactive</eventStatus>
<eventType>Storage </eventType>
<eventStart>2019-10-06T09:43:00+01:00</eventStart>
<eventStop>2019-10-09T13:20:00+01:00</eventStop>
</event>
<unavailabilityType>Unplanned</unavailabilityType>
<publicationDateTime>2019-10-09T13:21:19+01:00</publicationDateTime>
<capacity>
<unitMeasure>TWh</unitMeasure>
<unavailableCapacity>1.03227</unavailableCapacity>
<availableCapacity>2.1317295</availableCapacity>
<technicalCapacity>3.1639995</technicalCapacity>
</capacity>
<unavailabilityReason>Failure</unavailabilityReason>
<remarks> </remarks>
<balancingZone>21YGB</balancingZone>
<affectedAsset>
<name xmlns="http://www.acer.europa.eu/REMIT/REMITUMMCommonSchema_V1.xsd">xxxx</name>
<eic xmlns="http://www.acer.europa.eu/REMIT/REMITUMMCommonSchema_V1.xsd">xxxx</eic>
</affectedAsset>
<marketParticipant>
<name xmlns="http://www.acer.europa.eu/REMIT/REMITUMMCommonSchema_V1.xsd">vvvvv</name>
<ace xmlns="http://www.acer.europa.eu/REMIT/REMITUMMCommonSchema_V1.xsd">vvvvvv</ace>
</marketParticipant>
</UMM>
</REMITUrgentMarketMessages>
</item>
<item>
<title>458</title>
<description>Event Status</description>
<a10:link href="xxxxx" />
<REMITUrgentMarketMessages xmlns="xxxxxx">
<UMM xmlns="">
<messageId>A000001</messageId>
<event>
<eventStatus>Dismissed</eventStatus>
<eventType>Storage</eventType>
<eventStart>2019-10-06T09:43:00+01:00</eventStart>
<eventStop>2019-10-10T18:00:00+01:00</eventStop>
</event>
<unavailabilityType>Unplanned</unavailabilityType>
<publicationDateTime>2019-10-06T09:45:22+01:00</publicationDateTime>
<capacity>
<unitMeasure>TWh</unitMeasure>
<unavailableCapacity>1.03227</unavailableCapacity>
<availableCapacity>2.1317295</availableCapacity>
<technicalCapacity>3.1639995</technicalCapacity>
</capacity>
<unavailabilityReason>Failure</unavailabilityReason>
<remarks> </remarks>
<balancingZone>21YGB</balancingZone>
<affectedAsset>
<name xmlns="http://www.acer.europa.eu/REMIT/REMITUMMCommonSchema_V1.xsd">sssss</name>
<eic xmlns="http://www.acer.europa.eu/REMIT/REMITUMMCommonSchema_V1.xsd">sssss</eic>
</affectedAsset>
<marketParticipant>
<name xmlns="http://www.acer.europa.eu/REMIT/REMITUMMCommonSchema_V1.xsd">uguu</name>
<ace xmlns="http://www.acer.europa.eu/REMIT/REMITUMMCommonSchema_V1.xsd">vvvvv</ace>
</marketParticipant>
</UMM>
</REMITUrgentMarketMessages>
</item>
</channel>
</rss>
Я пытался использовать xml.etree.ElementTree для загрузки в дерево и длязацикливание на узлах, однако я не рассматриваю это как элегантное решение и думаю, что использование BeautifulSoup, как показано в приведенном ниже коде, лучшесуществует в python, который преобразует строку xml в класс