🚀. Socket Launch Week Day 3:Socket Firewall Now Blocks Malicious VS Code and Open VSX Extensions.Learn more
Sign In

@office-open/xml

Package Overview
Dependencies
Maintainers
1
Versions
43
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@office-open/xml

XML parsing and serialization, replacing xml + xml-js

Source
npmnpm
Version
0.1.0
Version published
Weekly downloads
1.6K
91.17%
Maintainers
1
Weekly downloads
 
Created
Source

@office-open/xml

npm version npm downloads npm license zero dependencies

XML parsing and serialization for Office Open XML. Zero dependencies, drop-in replacement for xml + xml-js.

Features

  • Zero Dependencies - No external runtime dependencies, pure TypeScript implementation
  • xml() Serialization - Drop-in replacement for the xml package
  • xml2js() Parsing - Drop-in replacement for xml-js XML parsing
  • js2xml() Stringifying - Drop-in replacement for xml-js JS-to-XML conversion
  • toElement() Direct Convert - Direct conversion from xml object format to xml-js Element, 16-33x faster than the xml→xml2js bridge
  • Complete Type Definitions - Full type compatibility with xml and xml-js, import without changes
  • OOXML Optimized - Implements all options needed for Office Open XML document generation

Installation

# Install with npm
$ npm install @office-open/xml

# Install with pnpm
$ pnpm add @office-open/xml

Migration from xml + xml-js

Replace your existing imports:

// Before
import xml from "xml";
import { xml2js, js2xml } from "xml-js";
import type { Element } from "xml-js";

// After
import { xml, xml2js, js2xml } from "@office-open/xml";
import type { Element } from "@office-open/xml";

No other code changes needed. All options and output formats are compatible.

Quick Start

import { xml, xml2js, js2xml, toElement } from "@office-open/xml";

// Serialize JS objects to XML
const xmlStr = xml({ "w:p": [{ _attr: { "w:val": "1" } }, { "w:r": [{ "w:t": "Hello" }] }] });
// <w:p w:val="1"><w:r><w:t>Hello</w:t></w:r></w:p>

// Parse XML to JS objects
const parsed = xml2js("<w:t>Hello</w:t>", { compact: false });

// Convert JS objects back to XML
const output = js2xml(parsed);

// Direct conversion (faster than xml → xml2js bridge)
const element = toElement({
    "w:p": [{ _attr: { "w:val": "1" } }, { "w:r": [{ "w:t": "Hello" }] }],
});

API

xml(input, options?)

Serialize JavaScript objects to XML string. Compatible with the xml package.

xml2js(xmlString, options?)

Parse XML string to JavaScript object. Compatible with xml-js.

js2xml(jsObject, options?)

Convert JavaScript object (xml-js Element format) to XML string. Compatible with xml-js.

json2xml(jsObject, options?)

Alias for js2xml.

xml2json(xmlString, options?)

Convenience function that returns JSON.stringify(xml2js(xmlString, options)).

toElement(input)

Direct conversion from xml object format to xml-js Element format. Much faster than the xml() → xml2js() bridge path.

escapeXml(str) / escapeAttributeValue(str)

Low-level XML entity escaping functions.

Benchmark

Performance comparison against original xml (1.0.1) and xml-js (1.6.11) packages:

Serialization (xml)

Scenario@office-open/xmlxmlSpeedup
Simple element4,103,029 hz734,685 hz5.58x
Nested element940,333 hz321,791 hz2.92x
Nested with declaration800,517 hz262,125 hz3.05x

Parsing (xml2js)

Scenario@office-open/xmlxml-jsSpeedup
Simple XML1,002,659 hz83,057 hz12.07x
Complex OOXML357,081 hz48,687 hz7.34x
With captureSpaces361,555 hz44,868 hz8.06x

Stringifying (js2xml)

Scenario@office-open/xmlxml-jsSpeedup
Simple element780,070 hz161,521 hz4.83x
Complex OOXML276,878 hz106,527 hz2.60x

Direct Conversion (toElement vs bridge)

ScenariotoElement()xml() + xml2js() bridgeSpeedup
Simple14,119,071 hz853,290 hz16.55x
Nested3,745,934 hz422,217 hz8.87x

Bundle Size

@office-open/xmlxml + xml-js
gzip4.22 kB~15 kB

License

  • MIT © Demo Macro

Keywords

office-open

FAQs

Package last updated on 01 May 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts