UNPKG

libxml2-wasm

Version:

WebAssembly-based libxml2 javascript wrapper

414 lines (413 loc) 12.8 kB
import { XmlDocument } from './document.mjs'; import { SaveOptions, XmlOutputBufferHandler } from './libxml2.mjs'; import { NamespaceMap, XmlXPath } from './xpath.mjs'; /** * The base class for all types of XML nodes. */ export declare abstract class XmlNode { /** * The {@link XmlDocument} containing this node. */ get doc(): XmlDocument; /** * Remove the node from its parent. */ remove(): void; /** * The parent node of this node. * * For root node, its parent is null. */ get parent(): XmlElement | null; /** * The content string of the node. */ get content(): string; /** * The line number of the node if the node is parsed from an XML document. */ get line(): number; /** * Find the first descendant node matching the given compiled xpath selector * * @param xpath XPath selector * @returns null if not found, otherwise an instance of the subclass of {@link XmlNode}. * @see * - {@link find} * - {@link eval} * - {@link XmlXPath.compile | XmlXPath.compile} */ get(xpath: XmlXPath): XmlNode | null; /** * Find the first descendant node matching the given xpath selector * * @param xpath XPath selector * @param namespaces mapping between prefix and the namespace URI, used in the XPath * @returns null if not found, otherwise an instance of the subclass of {@link XmlNode}. * @see * - {@link find} * - {@link eval} */ get(xpath: string, namespaces?: NamespaceMap): XmlNode | null; /** * Find all the descendant nodes matching the given compiled xpath selector. * @param xpath XPath selector * @returns An empty array if no nodes are found. * @see * - {@link get} * - {@link eval} * - {@link XmlXPath.compile | XmlXPath.compile} */ find(xpath: XmlXPath): XmlNode[]; /** * Find all the descendant nodes matching the given xpath selector. * @param xpath XPath selector * @param namespaces mapping between prefix and the namespace URI, used in the XPath * @returns An empty array if no nodes are found. * @see * - {@link get} * - {@link eval} */ find(xpath: string, namespaces?: NamespaceMap): XmlNode[]; /** * Evaluate the given XPath selector on this node. * @param xpath XPath selector * @see * - {@link get} * - {@link find} * - {@link XmlXPath.compile | XmlXPath.compile} */ eval(xpath: XmlXPath): XmlNode[] | string | boolean | number; /** * Evaluate the given XPath selector on this node. * @param xpath XPath selector * @see * - {@link get} * - {@link find} */ eval(xpath: string, namespaces?: NamespaceMap): XmlNode[] | string | boolean | number; } /** * The base class representing a node that can have siblings. */ export declare abstract class XmlTreeNode extends XmlNode { /** * Add a comment sibling node after this node. * * @param content the content of the comment * * @see {@link prependComment} * @see {@link XmlElement#addComment} */ appendComment(content: string): XmlComment; /** * Insert a comment sibling node before this node. * @param content the content of the comment * * @see {@link appendComment} * @see {@link XmlElement#addComment} */ prependComment(content: string): XmlComment; /** * Add a CDATA section sibling node after this node. * @param content the content of the CDATA section * * @see {@link prependCData} * @see {@link XmlElement#addCData} */ appendCData(content: string): XmlCData; /** * Insert a CDATA section sibling node before this node. * @param content the content of the CDATA section * * @see {@link appendCData} * @see {@link XmlElement#addCData} */ prependCData(content: string): XmlCData; /** * Add an element sibling node after this node. * @param name the element name * @param prefix the prefix of the element for the namespace * * @see {@link prependElement} * @see {@link XmlElement#addElement} */ appendElement(name: string, prefix?: string): XmlElement; /** * Insert an element sibling node before this node. * @param name the element name * @param prefix the prefix of the element for the namespace * * @see {@link appendElement} * @see {@link XmlElement#addElement} */ prependElement(name: string, prefix?: string): XmlElement; /** * Add a text sibling node after this node. * @param text the content of the text node * * @see {@link prependText} * @see {@link XmlElement#addText} */ appendText(text: string): XmlText; /** * Insert a text sibling node before this node. * @param text the content of the text node * * @see {@link appendText} * @see {@link XmlElement#addText} */ prependText(text: string): XmlText; /** * Add an entity reference sibling node after this node. * @param name the name of the entity reference * @see {@link prependEntityReference} * @see {@link XmlElement#addEntityReference} */ appendEntityReference(name: string): XmlEntityReference; /** * Insert an entity reference sibling node before this node. * @param name the name of the entity reference * @see {@link appendEntityReference} * @see {@link XmlElement#addEntityReference} */ prependEntityReference(name: string): XmlEntityReference; /** * The node that represents the next sibling. * * @return null if this node is the last one. * * @see * - {@link XmlElement#firstChild} * - {@link XmlElement#lastChild} * - {@link prev} */ get next(): XmlTreeNode | null; /** * The node that represents the previous sibling. * * @return null if this node is the first one. * * @see * - {@link XmlElement#firstChild} * - {@link XmlElement#lastChild} * - {@link next} */ get prev(): XmlTreeNode | null; } /** * The interface for the XML nodes that have names and namespaces. */ export interface XmlNamedNode { /** * The name of this node. */ get name(): string; /** * The URI of the namespace applied to this node. */ get namespaceUri(): string; /** * The prefix representing the namespace applied to this node. */ get prefix(): string; /** * Alias of {@link prefix} */ get namespacePrefix(): string; /** * Set the namespace prefix of this node. * @param prefix The new prefix to set. * Use empty string to remove the prefix. */ set prefix(prefix: string); set namespacePrefix(prefix: string); /** * Effective namespace declarations on this node, including inherited. */ get namespaces(): NamespaceMap; /** * Find out corresponding namespace URI for a prefix * @param prefix */ namespaceForPrefix(prefix: string): string | null; } export interface XmlElement extends XmlNamedNode { } /** * The class representing an XML element node. */ export declare class XmlElement extends XmlTreeNode { /** * The node representing the first child of an element. * * Note that the children of an element do not include attributes. * * @return null if this node has no child. * * @see * - {@link lastChild} * - {@link next} * - {@link prev} */ get firstChild(): XmlTreeNode | null; /** * The node representing the last child of an element. * * Note that the children of an element do not include attributes. * * Return null if this node has no child * * @see * - {@link firstChild} * - {@link next} * - {@link prev} */ get lastChild(): XmlTreeNode | null; /** * All attributes of this element. */ get attrs(): XmlAttribute[]; /** * Namespace declarations on this element * * @returns Empty object if there's no local namespace definition on this element. * Note that the default namespace uses empty string as the key in the returned object. */ get nsDeclarations(): NamespaceMap; /** * @deprecated use {@link nsDeclarations} instead. */ get localNamespaces(): NamespaceMap; /** * Add a namespace declaration to this element. * @param uri The namespace URI. * @param prefix The prefix that the namespace to be used as. * If not provided, it will be treated as the default namespace. * * @throws XmlError if namespace declaration already exists. */ addNsDeclaration(uri: string, prefix?: string): void; /** * @deprecated use {@link addNsDeclaration} instead. */ addLocalNamespace(uri: string, prefix?: string): void; /** * Get the attribute of this element. * @param name The name of the attribute * @param prefix The namespace prefix to the attribute. * @return null if the attribute doesn't exist. */ attr(name: string, prefix?: string): XmlAttribute | null; /** * Set the attribute of this element. * @param name The name of the attribute * @param value The value of the attribute * @param prefix The namespace prefix to the attribute. */ setAttr(name: string, value: string, prefix?: string): XmlAttribute; /** * Add a child comment node to the end of the children list. * @param content the content of the comment * * @see {@link appendComment} * @see {@link prependComment} */ addComment(content: string): XmlComment; /** * Add a child CDATA section node to the end of the children list. * @param content the content of the CDATA section * * @see {@link appendCData} * @see {@link prependCData} */ addCData(content: string): XmlCData; /** * Add a new element to the end of the children list. * @param name the element name * @param prefix the prefix of the element for the namespace * * @see {@link appendElement} * @see {@link prependElement} */ addElement(name: string, prefix?: string): XmlElement; /** * Add a child text node to the end of the children list. * Note that this method will merge the text node if the last child is also a text node. * @param text the content of the text node * * @see {@link appendText} * @see {@link prependText} */ addText(text: string): XmlText; /** * Add a child entity reference node to the end of the children list. * @param name the name of the entity reference * @see {@link prependEntityReference} * @see {@link appendEntityReference} */ addEntityReference(name: string): XmlEntityReference; /** * Save the XmlElement to a buffer and invoke the callbacks to process. * * @param handler handlers to process the content in the buffer * @param options options to adjust the saving behavior * @see {@link toString} * @see {@link XmlDocument#save} */ save(handler: XmlOutputBufferHandler, options?: SaveOptions): void; /** * Save the XmlElement to a string * @param options options to adjust the saving behavior * @see {@link save} * @see {@link XmlDocument#toString} */ toString(options?: SaveOptions): string; } export interface XmlAttribute extends XmlNamedNode { } /** * The class representing an XML attribute node. */ export declare class XmlAttribute extends XmlNode { /** * Remove current attribute from the element and document. */ remove(): void; /** * The value of this attribute. */ get value(): string; /** * Set the value of this attribute. */ set value(value: string); /** * Alias of {@link value}. */ get content(): string; set content(value: string); } /** * A simple node that contains only text content without children. */ export declare abstract class XmlSimpleNode extends XmlTreeNode { get content(): string; /** * Set the content of the node. * @param value the new content */ set content(value: string); } export declare class XmlCData extends XmlSimpleNode { } export declare class XmlComment extends XmlSimpleNode { } export declare class XmlText extends XmlSimpleNode { } export declare class XmlEntityReference extends XmlTreeNode { /** * The name of the entity this node references. */ get name(): string; }