/
XmlTransformer.ts
43 lines (38 loc) · 1.1 KB
/
XmlTransformer.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
if (global && !global.window) {
global.window = {} as Window;
if (!global.window.DOMParser) {
// tslint:disable-next-line
global.window.DOMParser = require('xmldom').DOMParser;
}
}
import {OnmsError} from '../api/OnmsError';
/** @hidden */
// tslint:disable-next-line
const X2JS = require('x2js');
/** @hidden */
const xmlParser = new X2JS({
arrayAccessForm: 'property',
attributePrefix: '',
ignoreRoot: true,
});
/**
* Helper class to transform any xml string to a javascript object.
*/
export class XmlTransformer {
/**
* A convenience method for implementers to use to turn XML into a javascript object.
* Use this to process an XML response before returning it in an [[OnmsResult]] object.
*/
public transform(data: any) {
if (typeof data === 'string') {
try {
return xmlParser.xml2js(data);
} catch (err) {
throw new OnmsError(err.message, undefined, undefined, data);
}
} else {
// assume it's already parsed
return data;
}
}
}