# xml example If you like directly working with XML, here's an example of how to for this: ```ts const posts = [ { title: 'Launching SSH during early boot with mkinitfs', url: 'https://estrogen.zone/~mem/blog/1768406136-alpine-ssh-early-initfs-disk-decryption/', blurb: 'Replacing the early init with our own script to launch SSH, killing it in early userspace, and allowing remote disk decryption in the mean time', author: '7222e800', guid: 'https://estrogen.zone/~mem/blog/1768406136', published: new Date('2026-01-14T15:53:57Z').toUTCString() } ]; const doc = new XMLDocumentRoot().child( new XMLDeclaration().version().encoding(), new XMLRootElement("rss") .attribute("version", "2.0") .xmlns("content", "http://purl.org/rss/1.0/modules/content/") .child( new XMLElement('channel') .child( new XMLElement('title').child(new XMLText('Latest blog posts for 7222e800')), new XMLElement('link').child(new XMLText('https://estrogen.zone/~mem/blog/')), new XMLElement('description').child(new XMLText('Some Description')), new XMLElement('pubDate').child(new XMLText(new Date().toUTCString())), ...posts.map(post => new XMLElement('item').child( new XMLElement('title').child(new XMLText(post.title)), new XMLElement('link').child(new XMLText(post.url)), new XMLElement('description').child(new XMLText(post.blurb)), new XMLElement('author').child(new XMLText(post.author)), new XMLElement('guid').child(new XMLText(post.guid)), new XMLElement('published').child(new XMLText(post.published)), )) ) ) ); console.log( util.inspect( doc, { compact: false, colors: true, breakLength: 80, depth: 90 }, true ) ); console.log(doc.toString()); ``` as of writing, will output this internal state: ```log XMLDocumentRoot { attributes: Map(0) {}, children: [ XMLDeclaration { attributes: Map(2) { 'version' => '1.0', 'encoding' => 'UTF-8' }, children: [], tagType: '#declaration' }, XMLRootElement { attributes: Map(2) { 'version' => '2.0', 'xmlns:content' => 'http://purl.org/rss/1.0/modules/content/' }, children: [ XMLElement { attributes: Map(0) {}, children: [ XMLElement { attributes: Map(0) {}, children: [ XMLText { tagType: '#text', text: 'Latest blog posts for 7222e800' } ], tagType: '#element', tagName: 'title' }, XMLElement { attributes: Map(0) {}, children: [ XMLText { tagType: '#text', text: 'https://estrogen.zone/~mem/blog/' } ], tagType: '#element', tagName: 'link' }, XMLElement { attributes: Map(0) {}, children: [ XMLText { tagType: '#text', text: 'Some Description' } ], tagType: '#element', tagName: 'description' }, XMLElement { attributes: Map(0) {}, children: [ XMLText { tagType: '#text', text: 'Mon, 26 Jan 2026 03:34:31 GMT' } ], tagType: '#element', tagName: 'pubDate' }, XMLElement { attributes: Map(0) {}, children: [ XMLElement { attributes: Map(0) {}, children: [ XMLText { tagType: '#text', text: 'Launching SSH during early boot with mkinitfs' } ], tagType: '#element', tagName: 'title' }, XMLElement { attributes: Map(0) {}, children: [ XMLText { tagType: '#text', text: 'https://estrogen.zone/~mem/blog/1768406136-alpine-ssh-early-initfs-disk-decryption/' } ], tagType: '#element', tagName: 'link' }, XMLElement { attributes: Map(0) {}, children: [ XMLText { tagType: '#text', text: 'Replacing the early init with our own script to launch SSH, killing it in early userspace, and allowing remote disk decryption in the mean time' } ], tagType: '#element', tagName: 'description' }, XMLElement { attributes: Map(0) {}, children: [ XMLText { tagType: '#text', text: '7222e800' } ], tagType: '#element', tagName: 'author' }, XMLElement { attributes: Map(0) {}, children: [ XMLText { tagType: '#text', text: 'https://estrogen.zone/~mem/blog/1768406136' } ], tagType: '#element', tagName: 'guid' }, XMLElement { attributes: Map(0) {}, children: [ XMLText { tagType: '#text', text: 'Wed, 14 Jan 2026 15:53:57 GMT' } ], tagType: '#element', tagName: 'published' } ], tagType: '#element', tagName: 'item' } ], tagType: '#element', tagName: 'channel' } ], tagType: '#element', tagName: 'rss' } ], tagType: '#document' } ``` and this RSS: ```xml Latest blog posts for 7222e800 https://estrogen.zone/~mem/blog/ Some Description Mon, 26 Jan 2026 03:34:31 GMT Launching SSH during early boot with mkinitfs https://estrogen.zone/~mem/blog/1768406136-alpine-ssh-early-initfs-disk-decryption/ Replacing the early init with our own script to launch SSH, killing it in early userspace, and allowing remote disk decryption in the mean time 7222e800 https://estrogen.zone/~mem/blog/1768406136 Wed, 14 Jan 2026 15:53:57 GMT ```