1import sys
2import xml.dom
3from _typeshed import Self
4from typing import IO, Any, Optional, Union
5from xml.dom.xmlbuilder import DocumentLS, DOMImplementationLS
6from xml.sax.xmlreader import XMLReader
7
8def parse(file: Union[str, IO[Any]], parser: Optional[XMLReader] = ..., bufsize: Optional[int] = ...): ...
9def parseString(string: Union[str, bytes], parser: Optional[XMLReader] = ...): ...
10def getDOMImplementation(features=...): ...
11
12class Node(xml.dom.Node):
13    namespaceURI: Optional[str]
14    parentNode: Any
15    ownerDocument: Any
16    nextSibling: Any
17    previousSibling: Any
18    prefix: Any
19    if sys.version_info >= (3, 9):
20        def toxml(self, encoding: Optional[Any] = ..., standalone: Optional[Any] = ...): ...
21        def toprettyxml(
22            self, indent: str = ..., newl: str = ..., encoding: Optional[Any] = ..., standalone: Optional[Any] = ...
23        ): ...
24    else:
25        def toxml(self, encoding: Optional[Any] = ...): ...
26        def toprettyxml(self, indent: str = ..., newl: str = ..., encoding: Optional[Any] = ...): ...
27    def hasChildNodes(self) -> bool: ...
28    def insertBefore(self, newChild, refChild): ...
29    def appendChild(self, node): ...
30    def replaceChild(self, newChild, oldChild): ...
31    def removeChild(self, oldChild): ...
32    def normalize(self) -> None: ...
33    def cloneNode(self, deep): ...
34    def isSupported(self, feature, version): ...
35    def isSameNode(self, other): ...
36    def getInterface(self, feature): ...
37    def getUserData(self, key): ...
38    def setUserData(self, key, data, handler): ...
39    childNodes: Any
40    def unlink(self) -> None: ...
41    def __enter__(self: Self) -> Self: ...
42    def __exit__(self, et, ev, tb) -> None: ...
43
44class DocumentFragment(Node):
45    nodeType: Any
46    nodeName: str
47    nodeValue: Any
48    attributes: Any
49    parentNode: Any
50    childNodes: Any
51    def __init__(self) -> None: ...
52
53class Attr(Node):
54    name: str
55    nodeType: Any
56    attributes: Any
57    specified: bool
58    ownerElement: Any
59    namespaceURI: Optional[str]
60    childNodes: Any
61    nodeName: Any
62    nodeValue: str
63    value: str
64    prefix: Any
65    def __init__(
66        self, qName: str, namespaceURI: Optional[str] = ..., localName: Optional[Any] = ..., prefix: Optional[Any] = ...
67    ) -> None: ...
68    def unlink(self) -> None: ...
69
70class NamedNodeMap:
71    def __init__(self, attrs, attrsNS, ownerElement) -> None: ...
72    def item(self, index): ...
73    def items(self): ...
74    def itemsNS(self): ...
75    def __contains__(self, key): ...
76    def keys(self): ...
77    def keysNS(self): ...
78    def values(self): ...
79    def get(self, name, value: Optional[Any] = ...): ...
80    def __len__(self) -> int: ...
81    def __eq__(self, other: Any) -> bool: ...
82    def __ge__(self, other: Any) -> bool: ...
83    def __gt__(self, other: Any) -> bool: ...
84    def __le__(self, other: Any) -> bool: ...
85    def __lt__(self, other: Any) -> bool: ...
86    def __getitem__(self, attname_or_tuple): ...
87    def __setitem__(self, attname, value) -> None: ...
88    def getNamedItem(self, name): ...
89    def getNamedItemNS(self, namespaceURI: str, localName): ...
90    def removeNamedItem(self, name): ...
91    def removeNamedItemNS(self, namespaceURI: str, localName): ...
92    def setNamedItem(self, node): ...
93    def setNamedItemNS(self, node): ...
94    def __delitem__(self, attname_or_tuple) -> None: ...
95
96AttributeList = NamedNodeMap
97
98class TypeInfo:
99    namespace: Any
100    name: Any
101    def __init__(self, namespace, name) -> None: ...
102
103class Element(Node):
104    nodeType: Any
105    nodeValue: Any
106    schemaType: Any
107    parentNode: Any
108    tagName: str
109    prefix: Any
110    namespaceURI: Optional[str]
111    childNodes: Any
112    nextSibling: Any
113    def __init__(
114        self, tagName, namespaceURI: Optional[str] = ..., prefix: Optional[Any] = ..., localName: Optional[Any] = ...
115    ) -> None: ...
116    def unlink(self) -> None: ...
117    def getAttribute(self, attname): ...
118    def getAttributeNS(self, namespaceURI: str, localName): ...
119    def setAttribute(self, attname, value) -> None: ...
120    def setAttributeNS(self, namespaceURI: str, qualifiedName: str, value) -> None: ...
121    def getAttributeNode(self, attrname): ...
122    def getAttributeNodeNS(self, namespaceURI: str, localName): ...
123    def setAttributeNode(self, attr): ...
124    setAttributeNodeNS: Any
125    def removeAttribute(self, name) -> None: ...
126    def removeAttributeNS(self, namespaceURI: str, localName) -> None: ...
127    def removeAttributeNode(self, node): ...
128    removeAttributeNodeNS: Any
129    def hasAttribute(self, name: str) -> bool: ...
130    def hasAttributeNS(self, namespaceURI: str, localName) -> bool: ...
131    def getElementsByTagName(self, name): ...
132    def getElementsByTagNameNS(self, namespaceURI: str, localName): ...
133    def writexml(self, writer, indent: str = ..., addindent: str = ..., newl: str = ...) -> None: ...
134    def hasAttributes(self) -> bool: ...
135    def setIdAttribute(self, name) -> None: ...
136    def setIdAttributeNS(self, namespaceURI: str, localName) -> None: ...
137    def setIdAttributeNode(self, idAttr) -> None: ...
138
139class Childless:
140    attributes: Any
141    childNodes: Any
142    firstChild: Any
143    lastChild: Any
144    def appendChild(self, node) -> None: ...
145    def hasChildNodes(self) -> bool: ...
146    def insertBefore(self, newChild, refChild) -> None: ...
147    def removeChild(self, oldChild) -> None: ...
148    def normalize(self) -> None: ...
149    def replaceChild(self, newChild, oldChild) -> None: ...
150
151class ProcessingInstruction(Childless, Node):
152    nodeType: Any
153    target: Any
154    data: Any
155    def __init__(self, target, data) -> None: ...
156    nodeValue: Any
157    nodeName: Any
158    def writexml(self, writer, indent: str = ..., addindent: str = ..., newl: str = ...) -> None: ...
159
160class CharacterData(Childless, Node):
161    ownerDocument: Any
162    previousSibling: Any
163    def __init__(self) -> None: ...
164    def __len__(self) -> int: ...
165    data: str
166    nodeValue: Any
167    def substringData(self, offset: int, count: int) -> str: ...
168    def appendData(self, arg: str) -> None: ...
169    def insertData(self, offset: int, arg: str) -> None: ...
170    def deleteData(self, offset: int, count: int) -> None: ...
171    def replaceData(self, offset: int, count: int, arg: str) -> None: ...
172
173class Text(CharacterData):
174    nodeType: Any
175    nodeName: str
176    attributes: Any
177    data: Any
178    def splitText(self, offset): ...
179    def writexml(self, writer, indent: str = ..., addindent: str = ..., newl: str = ...) -> None: ...
180    def replaceWholeText(self, content): ...
181
182class Comment(CharacterData):
183    nodeType: Any
184    nodeName: str
185    def __init__(self, data) -> None: ...
186    def writexml(self, writer, indent: str = ..., addindent: str = ..., newl: str = ...) -> None: ...
187
188class CDATASection(Text):
189    nodeType: Any
190    nodeName: str
191    def writexml(self, writer, indent: str = ..., addindent: str = ..., newl: str = ...) -> None: ...
192
193class ReadOnlySequentialNamedNodeMap:
194    def __init__(self, seq=...) -> None: ...
195    def __len__(self): ...
196    def getNamedItem(self, name): ...
197    def getNamedItemNS(self, namespaceURI: str, localName): ...
198    def __getitem__(self, name_or_tuple): ...
199    def item(self, index): ...
200    def removeNamedItem(self, name) -> None: ...
201    def removeNamedItemNS(self, namespaceURI: str, localName) -> None: ...
202    def setNamedItem(self, node) -> None: ...
203    def setNamedItemNS(self, node) -> None: ...
204
205class Identified: ...
206
207class DocumentType(Identified, Childless, Node):
208    nodeType: Any
209    nodeValue: Any
210    name: Any
211    publicId: Any
212    systemId: Any
213    internalSubset: Any
214    entities: Any
215    notations: Any
216    nodeName: Any
217    def __init__(self, qualifiedName: str) -> None: ...
218    def cloneNode(self, deep): ...
219    def writexml(self, writer, indent: str = ..., addindent: str = ..., newl: str = ...) -> None: ...
220
221class Entity(Identified, Node):
222    attributes: Any
223    nodeType: Any
224    nodeValue: Any
225    actualEncoding: Any
226    encoding: Any
227    version: Any
228    nodeName: Any
229    notationName: Any
230    childNodes: Any
231    def __init__(self, name, publicId, systemId, notation) -> None: ...
232    def appendChild(self, newChild) -> None: ...
233    def insertBefore(self, newChild, refChild) -> None: ...
234    def removeChild(self, oldChild) -> None: ...
235    def replaceChild(self, newChild, oldChild) -> None: ...
236
237class Notation(Identified, Childless, Node):
238    nodeType: Any
239    nodeValue: Any
240    nodeName: Any
241    def __init__(self, name, publicId, systemId) -> None: ...
242
243class DOMImplementation(DOMImplementationLS):
244    def hasFeature(self, feature, version) -> bool: ...
245    def createDocument(self, namespaceURI: str, qualifiedName: str, doctype): ...
246    def createDocumentType(self, qualifiedName: str, publicId, systemId): ...
247    def getInterface(self, feature): ...
248
249class ElementInfo:
250    tagName: Any
251    def __init__(self, name) -> None: ...
252    def getAttributeType(self, aname): ...
253    def getAttributeTypeNS(self, namespaceURI: str, localName): ...
254    def isElementContent(self): ...
255    def isEmpty(self): ...
256    def isId(self, aname): ...
257    def isIdNS(self, namespaceURI: str, localName): ...
258
259class Document(Node, DocumentLS):
260    implementation: Any
261    nodeType: Any
262    nodeName: str
263    nodeValue: Any
264    attributes: Any
265    parentNode: Any
266    previousSibling: Any
267    nextSibling: Any
268    actualEncoding: Any
269    encoding: Any
270    standalone: Any
271    version: Any
272    strictErrorChecking: bool
273    errorHandler: Any
274    documentURI: Any
275    doctype: Any
276    childNodes: Any
277    def __init__(self) -> None: ...
278    def appendChild(self, node): ...
279    documentElement: Any
280    def removeChild(self, oldChild): ...
281    def unlink(self) -> None: ...
282    def cloneNode(self, deep): ...
283    def createDocumentFragment(self): ...
284    def createElement(self, tagName: str): ...
285    def createTextNode(self, data): ...
286    def createCDATASection(self, data): ...
287    def createComment(self, data): ...
288    def createProcessingInstruction(self, target, data): ...
289    def createAttribute(self, qName) -> Attr: ...
290    def createElementNS(self, namespaceURI: str, qualifiedName: str): ...
291    def createAttributeNS(self, namespaceURI: str, qualifiedName: str) -> Attr: ...
292    def getElementById(self, id): ...
293    def getElementsByTagName(self, name: str): ...
294    def getElementsByTagNameNS(self, namespaceURI: str, localName): ...
295    def isSupported(self, feature, version): ...
296    def importNode(self, node, deep): ...
297    if sys.version_info >= (3, 9):
298        def writexml(
299            self,
300            writer,
301            indent: str = ...,
302            addindent: str = ...,
303            newl: str = ...,
304            encoding: Optional[Any] = ...,
305            standalone: Optional[Any] = ...,
306        ) -> None: ...
307    else:
308        def writexml(
309            self, writer, indent: str = ..., addindent: str = ..., newl: str = ..., encoding: Optional[Any] = ...
310        ) -> None: ...
311    def renameNode(self, n, namespaceURI: str, name): ...
312