Unlocking the Power of XML in Node.js Applications
When it comes to Node.js, XML might not be the first thing that comes to mind. However, there are scenarios where you may need to read or write XML from a Node.js application. With over 3,400 XML-related packages on npm, it’s clear that there’s a significant demand for working with XML in Node.js.
Receiving XML over HTTP
In the past, XML-RPC and SOAP web services were the standard for exchanging data between applications. Although JSON APIs have become the norm, there are still cases where you might need to expose an XML-based API to allow other applications to feed XML data into your application.
One popular package for working with XML is xml2js, which pairs well with Express using the express-xml-bodyparser middleware. By default, the middleware will parse any incoming requests where the request’s Content-Type header is set to text/xml.
Validating XML with Schemas
Another common use of XML is as a format for exchanging data between different applications, sometimes between different organizations. An XML schema (XSD) is often used to define the XML message structure that each application should expect to send and receive.
The libxmljs2 package supports XML schema validation and allows you to load an XML schema from the server’s file system and use it to validate incoming XML data.
Manipulating HTML Content
What if your application needs to manipulate HTML? Unlike XML, HTML is not strictly compliant with the XML specification. Cheerio is a popular package that specializes in dealing with the nuances of HTML compared to XML.
Cheerio’s load() function parses the HTML fragment and returns a selector object with an API that is nearly identical to the jQuery core API. You can use this selector to locate and extract the text within all table cells in the HTML fragment, modify the HTML fragment by adding new style attributes, and more.
Generating SVG Images
Scalable Vector Graphics (SVG) is an XML-based image format supported by all major browsers. SVG XML is composed of a series of elements that define different types of shapes. CSS styles can be included with each shape to define its appearance.
The svgson package allows you to convert between SVG XML and JSON, making it easier to manipulate an SVG image with JavaScript. You can use this package to create a route that accepts three colors, loads an SVG image from the server’s file system, applies the colors to certain shapes in the image, and returns it to the client to be rendered.
Wrapping Up
In this article, we explored some real-world XML use cases using popular npm packages such as xml2js, libxmljs2, Cheerio, and svgson. We covered bidirectional conversion between XML and JavaScript, validating XML against schemas, parsing and manipulating HTML, and generating SVG images.
Whether you’re working with XML-based data exchanges or SVG image manipulation, these packages can help you unlock the power of XML in your Node.js applications.