@tripsnek/tmf
Version:
TypeScript Modeling Framework - A TypeScript port of the Eclipse Modeling Framework (EMF)
98 lines • 2.58 kB
TypeScript
/**
* A drop-in replacement for xml2js that converts XML to JavaScript objects
* with the same structure and behavior as xml2js.parseString()
*/
declare global {
interface DOMParser {
parseFromString(source: string, mimeType: string): Document;
}
interface Document {
documentElement: Element | null;
querySelector(selector: string): Element | null;
}
interface Element {
tagName: string;
attributes: NamedNodeMap;
childNodes: NodeList;
textContent: string | null;
}
interface NamedNodeMap {
length: number;
[index: number]: Attr;
}
interface Attr {
name: string;
value: string;
}
interface NodeList {
length: number;
[index: number]: Node;
}
interface Node {
nodeType: number;
textContent: string | null;
}
const Node: {
ELEMENT_NODE: number;
TEXT_NODE: number;
CDATA_SECTION_NODE: number;
};
}
export interface XmlToJsOptions {
explicitArray?: boolean;
mergeAttrs?: boolean;
explicitRoot?: boolean;
ignoreAttrs?: boolean;
trim?: boolean;
normalize?: boolean;
}
export declare class XmlToJsParser {
private options;
constructor(options?: XmlToJsOptions);
/**
* Parse XML string to JavaScript object (async version)
*/
parseString(xml: string): Promise<any>;
/**
* Parse XML string to JavaScript object (sync version)
*/
parseStringSync(xml: string): any;
/**
* Check if DOMParser is available (browser environment)
*/
private isDOMParserAvailable;
/**
* Browser implementation using DOMParser
*/
private parseInBrowser;
/**
* Node.js implementation using simple regex-based parser
* This is a lightweight XML parser that handles most common cases
*/
private parseInNode;
/**
* Convert DOM element to JavaScript object (for browser)
*/
private domElementToJs;
/**
* Parse attribute string into object
*/
private parseAttributes;
/**
* Add text content to current element
*/
private addTextContent;
/**
* Add child element to parent
*/
private addChildElement;
}
/**
* Drop-in replacement for xml2js.parseString()
*/
export declare function parseString(xml: string, callback?: (err: Error | null, result?: any) => void): Promise<any>;
/**
* Synchronous version
*/
export declare function parseStringSync(xml: string): any;
//# sourceMappingURL=xml-to-js-parser.d.ts.map