Been trying to structure an API response from XML to a readable pandas dataframe. I found a lot of inspiration in earlier threads on this topic, but the values in my dataframe still displays as "None".
The XML response:
<VehiclePositionResponse xmlns="http://fms-standard.com/rfms/v1.0.0/xsd/position" xmlns:ns2="http://fms-standard.com/rfms/v1.0.0/xsd/common/position">
    <VehiclePosition>
        <VIN>YS2R8X40005440923</VIN>
        <TriggerType>OTHER</TriggerType>
        <CreatedDateTime>2019-07-31T16:50:28</CreatedDateTime>
        <ReceivedDateTime>2019-07-31T16:50:29</ReceivedDateTime>
        <GNSSPosition>
            <ns2:Latitude>62.098339</ns2:Latitude>
            <ns2:Longitude>10.542222</ns2:Longitude>
            <ns2:Heading>291</ns2:Heading>
            <ns2:Altitude>655</ns2:Altitude>
            <ns2:Speed>0</ns2:Speed>
            <ns2:PositionDateTime>2019-07-31T16:50:28</ns2:PositionDateTime>
        </GNSSPosition>
        <WheelBasedSpeed></WheelBasedSpeed>
    </VehiclePosition>
    <VehiclePosition>
        <VIN>YS2R8X40005441367</VIN>
        <TriggerType>OTHER</TriggerType>
        <CreatedDateTime>2019-07-31T18:13:24</CreatedDateTime>
        <ReceivedDateTime>2019-07-31T18:13:25</ReceivedDateTime>
        <GNSSPosition>
            <ns2:Latitude>62.127206</ns2:Latitude>
            <ns2:Longitude>10.608676</ns2:Longitude>
            <ns2:Heading>3</ns2:Heading>
etc.
Code:
headers={'Authorization':Token,'Content-Type':'application/xml'}
r=requests.get(url, headers=headers)
def getvalueofnode(node):
    return node.text if node is not None else None
def main():
   root = cET.fromstring(r.content)
   dfcols = ['VIN', 'CreatedDateTime', 'ReceivedDateTime', 'Latitude', 'Longitude', 'Altitude']
   df_xml = pd.DataFrame(columns=dfcols)
   for node in root:
      VIN = node.find('VIN')
      CreatedDateTime = node.find('CreatedDateTime')
      ReceivedDateTime = node.find('ReceivedDateTime')
      Latitude = node.find('Latitude')
      Longitude = node.find('Longitude')
      Altitude = node.find('Altitude')
      df_xml = df_xml.append(
         pd.Series([getvalueofnode(VIN), getvalueofnode(CreatedDateTime), getvalueofnode(ReceivedDateTime), getvalueofnode(Latitude), getvalueofnode(Longitude), getvalueofnode(Altitude)], index=dfcols),
      ignore_index=True)
   print(df_xml)
main()
This is how my response looks like: Current Dataframe
 
    