We can make use of the xml.etree.ElementTree module, which is a part of the Python standard library to parse an XML String in Python.
Let us take a look at an example of parsing an XML String of stock prices data.
import xml.etree.ElementTree as ET
xml_string = '''
<stock_prices>
<day date="2023-08-01">
<symbol>CODE</symbol>
<price>100.50</price>
</day>
<day date="2023-08-02">
<symbol>CODE</symbol>
<price>105.20</price>
</day>
<day date="2023-08-03">
<symbol>CODE</symbol>
<price>103.80</price>
</day>
<day date="2023-08-04">
<symbol>CODE</symbol>
<price>110.00</price>
</day>
<day date="2023-08-05">
<symbol>CODE</symbol>
<price>108.75</price>
</day>
<day date="2023-08-06">
<symbol>CODE</symbol>
<price>112.30</price>
</day>
<day date="2023-08-07">
<symbol>CODE</symbol>
<price>113.90</price>
</day>
<day date="2023-08-08">
<symbol>CODE</symbol>
<price>114.50</price>
</day>
<day date="2023-08-09">
<symbol>CODE</symbol>
<price>118.20</price>
</day>
<day date="2023-08-10">
<symbol>CODE</symbol>
<price>115.80</price>
</day>
</stock_prices>
'''
root = ET.fromstring(xml_string)
stock_prices = []
for day_element in root.findall('day'):
date = day_element.get('date')
symbol = day_element.find('symbol').text
price = float(day_element.find('price').text)
stock_prices.append({'date': date, 'symbol': symbol, 'price': price})
for stock in stock_prices:
print(stock)
Output:

One other module that you can make use of is xml.dom.minidom.
import xml.dom.minidom
xml_string = '''
<stock_prices>
<day date="2023-08-01">
<symbol>CODE</symbol>
<price>100.50</price>
</day>
</stock_prices>
'''
dom = xml.dom.minidom.parseString(xml_string)
root = dom.documentElement
stock_prices = []
day_elements = root.getElementsByTagName('day')
for day_element in day_elements:
date = day_element.getAttribute('date')
symbol = day_element.getElementsByTagName('symbol')[0].childNodes[0].nodeValue
price = float(day_element.getElementsByTagName('price')[0].childNodes[0].nodeValue)
stock_prices.append({'date': date, 'symbol': symbol, 'price': price})
Provide Feedback For This Article
We take your feedback seriously and use it to improve our content. Thank you for helping us serve you better!
😊 Thanks for your time, your feedback has been registered!
Comments & Discussion
Facing issues? Have questions? Post them here! We're happy to help!