@rxap/xml-parser
Version:
Provides a set of decorators and services for parsing and serializing XML documents into TypeScript classes. It simplifies the process of mapping XML elements and attributes to class properties, handling data validation, and serializing objects back into
42 lines (41 loc) • 2 kB
TypeScript
import { Constructor, Type } from '@rxap/utilities';
import { RxapElement, RxapElementOptions } from './element';
import { ParsedElement, SafeParsedElement } from './elements/parsed-element';
import { XmlElementParserFunction } from './xml-element-parser-function';
export interface ElementParserWithParsers {
elementParser: Type<ParsedElement>;
parsers: XmlElementParserFunction<ParsedElement>[];
}
export declare class XmlParserService {
protected readonly DOMParser: typeof window.DOMParser;
readonly elementOptions: RxapElementOptions;
readonly parsers: Map<string, ElementParserWithParsers>;
protected _rootElement: string;
protected get rootElement(): string;
protected _rootParser: Constructor<ParsedElement> | null;
constructor(DOMParser: typeof window.DOMParser, elementOptions?: RxapElementOptions);
register(...elementParsers: Array<Constructor<ParsedElement>>): void;
setRootElement(nameOrElementParser: string | Constructor<ParsedElement>): void;
parseAttributes(parsedElement: ParsedElement, element: RxapElement): void;
/**
*
*
* @param element
* @param elementNameOrConstructor
* @param args Constructor parameters for the ParsedElement instance
* @param parent The parent Parsed Element
*/
parse<D extends ParsedElement<V>, V = any>(element: RxapElement, elementNameOrConstructor: (string | Constructor<D>) | undefined, parent: ParsedElement | null, args?: any[]): D & SafeParsedElement<V>;
protected determineElementNameAndParser(elementNameOrConstructor: string | Constructor<ParsedElement>): {
elementName: string;
parser: ElementParserWithParsers;
};
/**
*
* @param xml
* @param args a list of args passed to the element constructor
*/
parseFromXml<D extends ParsedElement, V = any>(xml: string, ...args: any[]): D & SafeParsedElement<V>;
private createDOMParser;
protected determineRootElement(xmlDoc: Document): RxapElement;
}