1kB XML library for Node.js, Bun, Deno, Browser, Edge runtime.
This library is designed to run on small JavaScript runtimes such as Cloudflare Workers. It also works on Node.js, Bun, Deno, and browsers.
- Render XML as a string, iterator, or stream.
- Render XML with indentation.
- Node.js
- Deno
- Bun
- Browser
- Edge runtime like Cloudflare Workers, Vercel Edge Functions
Install package from npm. You can also use yarn/pnpm instead of npm.
If you are using Bun, you can install with bun add
command.
npm install @shun-shobon/littlexml
You can import from the package as @shun-shobon/littlexml
.
import { element, renderToString } from "@shun-shobon/littlexml";
You can directly import from npm:@shun-shobon/littlexml
.
import { element, renderToString } from "npm:[email protected]";
You can directly import from unpkg.com
.
import {
element,
renderToString,
} from "https://unpkg.com/@shun-shobon/[email protected]";
This example is rendering a sitemap.
import { element, renderToString } from "@shun-shobon/littlexml";
const root = element("urlset")
.attr("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9")
.attr("xmlns:image", "http://www.google.com/schemas/sitemap-image/1.1")
.child(
element("url")
.child(element("loc").text("https://example.com/"))
.child(element("lastmod").text("2020-01-01"))
.child(element("changefreq").text("daily"))
.child(element("priority").text("0.8"))
.child(
element("image:image")
.child(element("image:loc").text("https://example.com/image.png"))
.child(element("image:caption").text("caption")),
),
);
const xml = renderToString(root, { version: "1.0", indent: 2 });
console.log(xml);
console output:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://example.com/</loc>
<lastmod>2020-01-01</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
<image:image>
<image:loc>https://example.com/image.png</image:loc>
<image:caption>caption</image:caption>
</image:image>
</url>
</urlset>