On this page
@std/xml
Overview Jump to heading
XML parsing and serialization for Deno.
This module implements a non-validating XML 1.0 parser based on the W3C XML 1.0 (Fifth Edition) specification.
Parsing APIs
Two parsing APIs are provided for different use cases:
| API | Use Case | Output |
|---|---|---|
parse |
Parse a complete XML string | Document tree |
parseXmlStream |
Streaming with maximum throughput | Direct callbacks |
Quick Examples
DOM-style parsing
import { parse } from "@std/xml";
import { assertEquals } from "@std/assert";
const doc = parse("<root><item>Hello</item></root>");
assertEquals(doc.root.name.local, "root");
High-performance streaming with callbacks
For maximum throughput when processing large files:
import { parseXmlStream } from "@std/xml";
const response = await fetch("https://example.com/feed.xml");
const textStream = response.body!.pipeThrough(new TextDecoderStream());
let itemCount = 0;
await parseXmlStream(textStream, {
onStartElement(name) {
if (name === "item") itemCount++;
},
});
console.log(`Found ${itemCount} items`);
Streaming with byte streams
For convenience with fetch responses:
import { parseXmlStreamFromBytes } from "@std/xml";
const response = await fetch("https://example.com/feed.xml");
await parseXmlStreamFromBytes(response.body!, {
onStartElement(name) {
console.log(`Element: ${name}`);
},
});
Position Tracking
Both parsers support optional position tracking (line, column, offset) for debugging and error reporting:
-
DOM parser (
parse): Position tracking is enabled by default to provide detailed error messages. Disable with{ trackPosition: false }for a performance boost when parsing trusted XML. -
Streaming parser (
parseXmlStream): Position tracking is disabled by default for optimal streaming performance. Enable with{ trackPosition: true }when you need position info.
Add to your project Jump to heading
deno add jsr:@std/xml