UNPKG

xml-helper-ts

Version:

A TypeScript library for XML parsing, validation with XSD schema, and XML/JSON conversion - built from scratch without external dependencies

153 lines 5.94 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.JsonToXmlConverter = exports.XmlToJsonConverter = exports.XmlValidator = exports.XsdParser = exports.XmlParser = exports.XmlHelper = void 0; const xml_parser_1 = require("./xml-parser"); const xsd_parser_1 = require("./xsd-parser"); const xml_validator_1 = require("./xml-validator"); const xml_to_json_1 = require("./xml-to-json"); const json_to_xml_1 = require("./json-to-xml"); class XmlHelper { constructor() { this.xmlParser = new xml_parser_1.XmlParser(); this.xsdParser = new xsd_parser_1.XsdParser(); this.schema = null; this.validator = null; } /** * Load and parse an XSD schema * @param xsdContent The XSD schema content as string * @returns Array of validation errors if any */ loadSchema(xsdContent) { const { schema, errors } = this.xsdParser.parseSchema(xsdContent); if (schema && errors.length === 0) { this.schema = schema; this.validator = new xml_validator_1.XmlValidator(schema); } return errors; } /** * Validate XML against the loaded schema * @param xmlContent The XML content to validate * @returns Array of validation errors with line numbers */ validateXml(xmlContent) { if (!this.schema || !this.validator) { return [{ line: 1, column: 1, message: 'No schema loaded. Call loadSchema() first.', code: 'NO_SCHEMA' }]; } const { node, errors } = this.xmlParser.parse(xmlContent); if (errors.length > 0) { return errors; } if (!node) { return [{ line: 1, column: 1, message: 'Failed to parse XML', code: 'PARSE_FAILED' }]; } const validationErrors = this.validator.validate(node); return validationErrors; } /** * Parse XML to JSON object * @param xmlContent The XML content to parse * @param options Options for XML to JSON conversion * @returns Parsed JSON object or null if parsing failed */ xmlToJson(xmlContent, options) { const { node, errors } = this.xmlParser.parse(xmlContent); if (errors.length > 0 || !node) { return { success: false, errors }; } try { const converter = new xml_to_json_1.XmlToJsonConverter(options); const jsonData = converter.convert(node); return { success: true, data: jsonData, errors: [] }; } catch (error) { return { success: false, errors: [{ line: 1, column: 1, message: error instanceof Error ? error.message : 'Conversion error', code: 'CONVERSION_ERROR' }] }; } } /** * Convert JSON object to XML string * @param jsonData The JSON data to convert * @param rootElement The root element name (optional) * @param options Options for JSON to XML conversion * @returns XML string representation */ jsonToXml(jsonData, rootElement, options) { const converter = new json_to_xml_1.JsonToXmlConverter(options); return converter.convert(jsonData, rootElement); } /** * Parse XML without validation (schema-free parsing) * @param xmlContent The XML content to parse * @returns Parsed XML node structure */ parseXml(xmlContent) { return this.xmlParser.parse(xmlContent); } /** * Get the currently loaded schema * @returns The loaded XSD schema or null */ getSchema() { return this.schema; } /** * Check if a schema is currently loaded * @returns True if a schema is loaded */ hasSchema() { return this.schema !== null; } } exports.XmlHelper = XmlHelper; // Export all types and classes for advanced usage __exportStar(require("./types"), exports); var xml_parser_2 = require("./xml-parser"); Object.defineProperty(exports, "XmlParser", { enumerable: true, get: function () { return xml_parser_2.XmlParser; } }); var xsd_parser_2 = require("./xsd-parser"); Object.defineProperty(exports, "XsdParser", { enumerable: true, get: function () { return xsd_parser_2.XsdParser; } }); var xml_validator_2 = require("./xml-validator"); Object.defineProperty(exports, "XmlValidator", { enumerable: true, get: function () { return xml_validator_2.XmlValidator; } }); var xml_to_json_2 = require("./xml-to-json"); Object.defineProperty(exports, "XmlToJsonConverter", { enumerable: true, get: function () { return xml_to_json_2.XmlToJsonConverter; } }); var json_to_xml_2 = require("./json-to-xml"); Object.defineProperty(exports, "JsonToXmlConverter", { enumerable: true, get: function () { return json_to_xml_2.JsonToXmlConverter; } }); // Export the main class as default exports.default = XmlHelper; //# sourceMappingURL=index.js.map