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})
Facing issues? Have Questions? Post them here! I am happy to answer!
Author Info:
Rakesh (He/Him) has over 14+ years of experience in Web and Application development. He is the author of insightful How-To articles for Code2care.
Follow him on: X
You can also reach out to him via e-mail: rakesh@code2care.org
More Posts related to Python,
- How to convert int to ASCII in Python
- How to make use of SQLite Module in Python?
- Split a String into Sub-string and Parse in Python
- Python: Pandas Rename Columns with List Example
- How to run Python file from Mac Terminal
- How to Exit a Loop in Python Code
- Python: How to Plot a Histogram using Matplotlib and data as list
- MD5 Hashing in Python
- Jupyter: Safari Cant Connect to the Server localhost:8888/tree
- Fix: AttributeError: str object has no attribute decode. Did you mean: encode?[Python]
- How to Read a binary File with Python
- How to add two float numbers in Python
- Python: How to install YAML Package
- Python: How to Save Image from URL
- What is Markdown in Jupyter Notebook with Examples
- How to change the Python Default version
- 33: Python Program to send an email vid GMail
- How to comment code in Python
- How to Fix AttributeError in Python
- Fix: error: Jupyter command `jupyter-nbconvert` not found [VSCode]
- How to comment out a block of code in Python
- List of All 35 Reserved Keywords in Python Programming Language 3.11
- Import Other Python Files Examples
- Python: How to add Progress Bar in Console with Examples
- 3 Ways to convert bytes to String in Python
More Posts:
- How to create alias in macOS - MacOS
- Sharepoint Server 2016 installation Prerequisites with download links - SharePoint
- Multiple ways to Convert tabs with spaces in Notepad++ - NotepadPlusPlus
- How to Auto Fill Down in Excel for Mac - MacOS
- Save webpage as pdf in Google Chrome for Mac OS X - Mac-OS-X
- Nano Undo/Redo Keyboard Shortcuts - Linux
- How to Save Jupyter Notebook as PDF - Python
- Mac: How to Open Android Studio from Terminal - MacOS