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!
More Posts related to Python,
- Python: Convert Date to DateTime
- How to sort a List using Lambda in Python
- Python matplotlib segmentation fault: 11 macOS Big Sur
- What is Terminal Velocity and its Formula? How to calculate it programmatically?
- How to install Python 3.11 on Mac
- How to flatten a nested list in Python
- Python: Pandas Merge DataFrames on Index Example
- How to Run all Cells at Once Jupyter Notebook
- Python - Convert float to String
- How to add borders to tkinter label text
- How to Exit a Loop in Python Code
- [Python] Fix: ValueError: All arrays must be of the same length
- Sorting an array using Bubble Sort in Python Programming
- How to Unzip a file using Python
- Python: Merge DataFrames Pandas Outer Join Example
- Change label (text) color in tkinter
- Convert Float to String in Python
- Fix: fatal error: No such file or directory compilation terminated
- Python: Access index/counter of a for loop iteration
- Import Other Python Files Examples
- How to install Anaconda on Mac (M1/M2 Mac)
- Python Regular Expression to Find All Matches in List
- How to Read a binary File with Python
- How to disable warnings while Python file execution
- Know current Python Version
More Posts:
- Eclipse : The type java.lang.CharSequence cannot be resolved. Indirectly referenced from required .class files - Java
- Mac: macOS Sonoma 14 Compatibility List - MacOS
- How to locate Python Installation on Windows (10/11) - Windows
- Change Mouse Scrolling in Mac OS X - Mac-OS-X
- Java location in Mac OS X - Mac-OS-X
- Spring Boot: JdbcTemplate Update Query With Parameters Example - Java
- Encode or Decode Base64 String using Mac Terminal Command - MacOS
- Install Microsoft Remote Desktop (RDP) Client on Mac - Microsoft