From c8bb704e915710890b678f73c38bf148d9bcc5fa Mon Sep 17 00:00:00 2001 From: Andrew Harvey Date: Tue, 15 Jun 2021 13:43:23 +1000 Subject: test xml entities encoding --- test/xmlEntities.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 test/xmlEntities.js (limited to 'test') diff --git a/test/xmlEntities.js b/test/xmlEntities.js new file mode 100755 index 0000000..5a03520 --- /dev/null +++ b/test/xmlEntities.js @@ -0,0 +1,61 @@ +#!/usr/bin/env node + +const fetch = require('node-fetch') +const xml = require('xml-js') + +// RAW value is `"Testing & complex < characters > '.` +// JSON value is "name": "\"Testing & complex < characters > '." +fetch(`https://master.apis.dev.openstreetmap.org/api/0.6/node/4327735719`, { + headers: { + 'Accept': 'application/json' + } +}) + .then(res => res.json()) + .then(json => { + const element = json.elements[0] + const body = xml.json2xml({ + _declaration: { + _attributes: { + version: "1.0", + encoding: "UTF-8" + } + }, + osmChange: { + _attributes: { + version: '0.6' + }, + modify: { + node: [ + { + _attributes: { + id: element.id, + version: element.version + 1, + lat: element.lat, + lon: element.lon + }, + tag: [ + { + _attributes: { + k: 'name', + v: element.tags.name + } + } + ] + } + ] + } + } + }, Object.assign({ + compact: true, + attributeValueFn: value => { + return value.replace(/"/g, '"') // convert quote back before converting amp + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + } + }, { spaces: 2 })) + console.log(body) + // result should match view-source:https://master.apis.dev.openstreetmap.org/api/0.6/node/4327735719 + // + }) -- cgit v1.2.3