shun-shobon / littlexml

1kB XML library for Node.js, Bun, Deno, Browser, Edge runtime.

Home Page:https://www.npmjs.com/package/@shun-shobon/littlexml

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

@shun-shobon/littlexml

1kB XML library for Node.js, Bun, Deno, Browser, Edge runtime.

npm bundle size test codecov

About

This library is designed to run on small JavaScript runtimes such as Cloudflare Workers. It also works on Node.js, Bun, Deno, and browsers.

Features

  • Render XML as a string, iterator, or stream.
  • Render XML with indentation.

Support platforms

  • Node.js
  • Deno
  • Bun
  • Browser
  • Edge runtime like Cloudflare Workers, Vercel Edge Functions

Installation

Node.js / Bun

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";

Deno

You can directly import from npm:@shun-shobon/littlexml.

import { element, renderToString } from "npm:littlexml@0.6.2";

Browser

You can directly import from unpkg.com.

import {
	element,
	renderToString,
} from "https://unpkg.com/@shun-shobon/littlexml@0.6.2";

Example

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>

About

1kB XML library for Node.js, Bun, Deno, Browser, Edge runtime.

https://www.npmjs.com/package/@shun-shobon/littlexml

License:MIT License


Languages

Language:TypeScript 96.0%Language:JavaScript 4.0%