XML DOM Parser

The DOM parser loads an entire XML document into memory and builds a tree of node objects. Your application then reads, modifies, and navigates this tree using the DOM API. This is the most common approach for working with XML in applications.

DOM Parser in JavaScript

var xmlString = `<?xml version="1.0"?>
<catalog>
  <product id="P001">
    <name>Laptop Stand</name>
    <price>1500</price>
  </product>
  <product id="P002">
    <name>USB Hub</name>
    <price>1299</price>
  </product>
</catalog>`;

var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlString, "text/xml");

// Check for parse errors
var error = xmlDoc.querySelector("parsererror");
if (error) {
  console.log("Parse error: " + error.textContent);
} else {
  var products = xmlDoc.getElementsByTagName("product");
  for (var i = 0; i < products.length; i++) {
    var id = products[i].getAttribute("id");
    var name = products[i].getElementsByTagName("name")[0].textContent;
    var price = products[i].getElementsByTagName("price")[0].textContent;
    console.log(id + ": " + name + " — INR " + price);
  }
}

Console Output

P001: Laptop Stand — INR 1500
P002: USB Hub — INR 1299

DOM Parser in Python (minidom)

import xml.dom.minidom

# Parse from file
doc = xml.dom.minidom.parse("catalog.xml")

# Parse from string
xml_string = '<catalog><product><name>USB Hub</name></product></catalog>'
doc = xml.dom.minidom.parseString(xml_string.encode())

# Get root element
root = doc.documentElement
print(root.tagName)    # "catalog"

# Get all product elements
products = doc.getElementsByTagName("product")
for p in products:
    name = p.getElementsByTagName("name")[0].firstChild.nodeValue
    print(name)

DOM Parser in Python (ElementTree — simpler)

import xml.etree.ElementTree as ET

tree = ET.parse("catalog.xml")
root = tree.getroot()

print(root.tag)    # "catalog"

for product in root.findall("product"):
    name = product.find("name").text
    price = product.find("price").text
    pid = product.get("id")
    print(f"{pid}: {name} — INR {price}")

DOM Parser in Java

import javax.xml.parsers.*;
import org.w3c.dom.*;

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("catalog.xml");

doc.getDocumentElement().normalize();

NodeList products = doc.getElementsByTagName("product");
for (int i = 0; i < products.getLength(); i++) {
    Element p = (Element) products.item(i);
    String id = p.getAttribute("id");
    String name = p.getElementsByTagName("name").item(0).getTextContent();
    String price = p.getElementsByTagName("price").item(0).getTextContent();
    System.out.println(id + ": " + name + " — INR " + price);
}

Key Points to Remember

  • The DOM parser loads the entire XML into a navigable tree in memory.
  • In JavaScript, use DOMParser and parseFromString().
  • In Python, xml.etree.ElementTree is simpler; xml.dom.minidom follows full DOM spec.
  • In Java, DocumentBuilder.parse() creates a Document object.
  • Always check for parse errors before processing the document.
  • Use getElementsByTagName() to collect all matching elements across the document.

Leave a Comment

Your email address will not be published. Required fields are marked *