Skip to content

xml Module

The xml module provides base functionality for parsing and manipulating XML documents, with submodules for DOM, SAX, and ElementTree.

Complexity Reference

Operation Time Space Notes
Parse XML O(n) O(n) n = document size; DOM loads entire tree
DOM traversal O(n) O(n) n = nodes; consider SAX for large files
XPath query O(n) O(n) n = nodes searched; result depends on query

XML Processing

Using ElementTree

import xml.etree.ElementTree as ET

# Parse XML - O(n)
tree = ET.parse('data.xml')
root = tree.getroot()

# Navigate tree - O(n)
for item in root.findall('item'):
    name = item.find('name').text
    price = item.find('price').text
    print(f"{name}: {price}")

# Modify and save - O(n)
root.attrib['updated'] = 'True'
tree.write('modified.xml')

Creating XML

import xml.etree.ElementTree as ET

# Create root - O(1)
root = ET.Element('catalog')

# Add children - O(1) each
item = ET.SubElement(root, 'item')
item.set('id', '1')

name = ET.SubElement(item, 'name')
name.text = 'Product'

price = ET.SubElement(item, 'price')
price.text = '29.99'

# Save - O(n)
tree = ET.ElementTree(root)
tree.write('output.xml')