I have this XML
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.16.1" type="navidrome" serverVersion="0.50.2 (823bef54)" openSubsonic="true"><searchResult3><song id="3b9d81b5def61a60705b9b89611a217f" parent="03693dd7b835740421cc1d6a4da201f3" isDir="false" title="Good Day featuring ScHoolboy Q" album="I Am > I Was" artist="21 Savage" track="11" year="2018" genre="Rap" coverArt="mf-3b9d81b5def61a60705b9b89611a217f_5c1d3668" size="9716623" contentType="audio/mpeg" suffix="mp3" duration="242" bitRate="320" path="21 Savage/I Am > I Was/11 - Good Day featuring ScHoolboy Q.mp3" created="2024-01-08T16:40:53.026754212Z" albumId="03693dd7b835740421cc1d6a4da201f3" artistId="1ae1d36568c651d53f78f427f05e9766" type="music" isVideo="false" bpm="0" comment=""><genres name="Rap"></genres></song></searchResult3></subsonic-response>
Which I got from an API call
I would like to be able to interact with it so I can check the artist
and then pull the id
I thought this would be as simple as calling a key on an array (wrong terminology I know. Dict?), how wrong was I?
Having done some searching, I’m in the process of figuring out how xml.etree.ElementTree
works. But it feels so overly complicated for what I’m trying to do? Am I going down the wrong path?
Another package to check out is
lxml
. I personally don’t like it due to its typing but sometimes I have been forced to use it for its added features over the builtin etree.