1(* 2 * Summary: the XMLReader implementation 3 * Description: API of the XML streaming API based on C# interfaces. 4 * 5 * Copy: See Copyright for the status of this software. 6 * 7 * Author: Daniel Veillard 8 *) 9 10{$IFDEF LIBXML_SCHEMAS_ENABLED} 11{$IFDEF LIBXML_READER_ENABLED} 12 13{$IFDEF POINTER} 14 xmlTextReaderPtr = ^xmlTextReader; 15{$ENDIF} 16 17{$IFDEF TYPE} 18(** 19 * xmlTextReaderMode: 20 * 21 * Internal state values for the reader. 22 *) 23 xmlTextReaderMode = ( 24 XML_TEXTREADER_MODE_INITIAL = 0, 25 XML_TEXTREADER_MODE_INTERACTIVE = 1, 26 XML_TEXTREADER_MODE_ERROR = 2, 27 XML_TEXTREADER_MODE_EOF =3, 28 XML_TEXTREADER_MODE_CLOSED = 4, 29 XML_TEXTREADER_MODE_READING = 5 30 ); 31 32(** 33 * xmlParserProperties: 34 * 35 * Some common options to use with xmlTextReaderSetParserProp, but it 36 * is better to use xmlParserOption and the xmlReaderNewxxx and 37 * xmlReaderForxxx APIs now. 38 *) 39 xmlParserProperties = ( 40 XML_PARSER_LOADDTD = 1, 41 XML_PARSER_DEFAULTATTRS = 2, 42 XML_PARSER_VALIDATE = 3, 43 XML_PARSER_SUBST_ENTITIES = 4 44 ); 45 46(** 47 * xmlParserSeverities: 48 * 49 * How severe an error callback is when the per-reader error callback API 50 * is used. 51 *) 52 xmlParserSeverities = ( 53 XML_PARSER_SEVERITY_VALIDITY_WARNING = 1, 54 XML_PARSER_SEVERITY_VALIDITY_ERROR = 2, 55 XML_PARSER_SEVERITY_WARNING = 3, 56 XML_PARSER_SEVERITY_ERROR = 4 57 ); 58 59(** 60 * xmlReaderTypes: 61 * 62 * Predefined constants for the different types of nodes. 63 *) 64 xmlReaderTypes = ( 65 XML_READER_TYPE_NONE = 0, 66 XML_READER_TYPE_ELEMENT = 1, 67 XML_READER_TYPE_ATTRIBUTE = 2, 68 XML_READER_TYPE_TEXT = 3, 69 XML_READER_TYPE_CDATA = 4, 70 XML_READER_TYPE_ENTITY_REFERENCE = 5, 71 XML_READER_TYPE_ENTITY = 6, 72 XML_READER_TYPE_PROCESSING_INSTRUCTION = 7, 73 XML_READER_TYPE_COMMENT = 8, 74 XML_READER_TYPE_DOCUMENT = 9, 75 XML_READER_TYPE_DOCUMENT_TYPE = 10, 76 XML_READER_TYPE_DOCUMENT_FRAGMENT = 11, 77 XML_READER_TYPE_NOTATION = 12, 78 XML_READER_TYPE_WHITESPACE = 13, 79 XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14, 80 XML_READER_TYPE_END_ELEMENT = 15, 81 XML_READER_TYPE_END_ENTITY = 16, 82 XML_READER_TYPE_XML_DECLARATION = 17 83 ); 84 85(** 86 * xmlTextReader: 87 * 88 * Structure for an xmlReader context. 89 *) 90 xmlTextReader = record end; 91 92 xmlTextReaderLocatorPtr = pointer; 93 94 xmlTextReaderErrorFunc = procedure(arg: pointer; msg: pchar; severity: xmlParserSeverities; locator: xmlTextReaderLocatorPtr); EXTDECL; 95{$ENDIF} 96 97{$IFDEF FUNCTION} 98(* 99 * Constructors & Destructor 100 *) 101function xmlNewTextReader(input: xmlParserInputBufferPtr; URI: pchar): xmlTextReaderPtr; EXTDECL; external xml2lib; 102function xmlNewTextReaderFilename(URI: pchar): xmlTextReaderPtr; EXTDECL; external xml2lib; 103procedure xmlFreeTextReader(reader: xmlTextReaderPtr); EXTDECL; external xml2lib; 104function xmlTextReaderSetup(reader: xmlTextReaderPtr; input: xmlParserInputBufferPtr; URL, encoding: pchar; options: cint): cint; EXTDECL; external xml2lib; 105 106(* 107 * Iterators 108 *) 109function xmlTextReaderRead(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 110{$IFDEF LIBXML_WRITER_ENABLED} 111function xmlTextReaderReadInnerXml(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 112function xmlTextReaderReadOuterXml(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 113{$ENDIF} 114function xmlTextReaderReadString(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 115function xmlTextReaderReadAttributeValue(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 116 117(* 118 * Attributes of the node 119 *) 120function xmlTextReaderAttributeCount(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 121function xmlTextReaderDepth(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 122function xmlTextReaderHasAttributes(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 123function xmlTextReaderHasValue(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 124function xmlTextReaderIsDefault(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 125function xmlTextReaderIsEmptyElement(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 126function xmlTextReaderNodeType(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 127function xmlTextReaderQuoteChar(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 128function xmlTextReaderReadState(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 129function xmlTextReaderIsNamespaceDecl(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 130 131function xmlTextReaderConstBaseUri(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 132function xmlTextReaderConstLocalName(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 133function xmlTextReaderConstName(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 134function xmlTextReaderConstNamespaceUri(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 135function xmlTextReaderConstPrefix(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 136function xmlTextReaderConstXmlLang(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 137function xmlTextReaderConstString(reader: xmlTextReaderPtr; str: xmlCharPtr): xmlCharPtr; EXTDECL; external xml2lib; 138function xmlTextReaderConstValue(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 139 140(* 141 * use the Const version of the routine for 142 * better performance and simpler code 143 *) 144function xmlTextReaderBaseUri(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 145function xmlTextReaderLocalName(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 146function xmlTextReaderName(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 147function xmlTextReaderNamespaceUri(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 148function xmlTextReaderPrefix(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 149function xmlTextReaderXmlLang(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 150function xmlTextReaderValue(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 151 152(* 153 * Methods of the XmlTextReader 154 *) 155function xmlTextReaderClose(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 156function xmlTextReaderGetAttributeNo(reader: xmlTextReaderPtr; no: cint): xmlCharPtr; EXTDECL; external xml2lib; 157function xmlTextReaderGetAttribute(reader: xmlTextReaderPtr; name: xmlCharPtr): xmlCharPtr; EXTDECL; external xml2lib; 158function xmlTextReaderGetAttributeNs(reader: xmlTextReaderPtr; localName, namespaceURI: xmlCharPtr): xmlCharPtr; EXTDECL; external xml2lib; 159function xmlTextReaderGetRemainder(reader: xmlTextReaderPtr): xmlParserInputBufferPtr; EXTDECL; external xml2lib; 160function xmlTextReaderLookupNamespace(reader: xmlTextReaderPtr; prefix: xmlCharPtr): xmlCharPtr; EXTDECL; external xml2lib; 161function xmlTextReaderMoveToAttributeNo(reader: xmlTextReaderPtr; no: cint): cint; EXTDECL; external xml2lib; 162function xmlTextReaderMoveToAttribute(reader: xmlTextReaderPtr; name: xmlCharPtr): cint; EXTDECL; external xml2lib; 163function xmlTextReaderMoveToAttributeNs(reader: xmlTextReaderPtr; localName, namespaceURI: xmlCharPtr): cint; EXTDECL; external xml2lib; 164function xmlTextReaderMoveToFirstAttribute(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 165function xmlTextReaderMoveToNextAttribute(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 166function xmlTextReaderMoveToElement(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 167function xmlTextReaderNormalization(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 168function xmlTextReaderConstEncoding(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 169 170(* 171 * Extensions 172 *) 173function xmlTextReaderSetParserProp(reader: xmlTextReaderPtr; prop, value: cint): cint; EXTDECL; external xml2lib; 174function xmlTextReaderGetParserProp(reader: xmlTextReaderPtr; prop: cint): cint; EXTDECL; external xml2lib; 175function xmlTextReaderCurrentNode(reader: xmlTextReaderPtr): xmlNodePtr; EXTDECL; external xml2lib; 176function xmlTextReaderGetParserLineNumber(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 177function xmlTextReaderGetParserColumnNumber(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 178function xmlTextReaderPreserve(reader: xmlTextReaderPtr): xmlNodePtr; EXTDECL; external xml2lib; 179{$IFDEF LIBXML_PATTERN_ENABLED} 180function xmlTextReaderPreservePattern(reader: xmlTextReaderPtr; pattern: xmlCharPtr; namespaces: xmlCharPtrPtr): cint; EXTDECL; external xml2lib; 181{$ENDIF} (* LIBXML_PATTERN_ENABLED *) 182function xmlTextReaderCurrentDoc(reader: xmlTextReaderPtr): xmlDocPtr; EXTDECL; external xml2lib; 183function xmlTextReaderExpand(reader: xmlTextReaderPtr): xmlNodePtr; EXTDECL; external xml2lib; 184function xmlTextReaderNext(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 185function xmlTextReaderNextSibling(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 186function xmlTextReaderIsValid(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 187{$IFDEF LIBXML_SCHEMAS_ENABLED} 188 189function xmlTextReaderRelaxNGValidate(reader: xmlTextReaderPtr; rng: pchar): cint; EXTDECL; external xml2lib; 190function xmlTextReaderRelaxNGSetSchema(reader: xmlTextReaderPtr; schema: xmlRelaxNGPtr): cint; EXTDECL; external xml2lib; 191function xmlTextReaderSchemaValidate(reader: xmlTextReaderPtr; xsd: pchar): cint; EXTDECL; external xml2lib; 192function xmlTextReaderSchemaValidateCtxt(reader: xmlTextReaderPtr; ctxt: xmlSchemaValidCtxtPtr; options: cint): cint; EXTDECL; external xml2lib; 193function xmlTextReaderSetSchema(reader: xmlTextReaderPtr; schema: xmlSchemaPtr): cint; EXTDECL; external xml2lib; 194{$ENDIF} 195function xmlTextReaderConstXmlVersion(reader: xmlTextReaderPtr): xmlCharPtr; EXTDECL; external xml2lib; 196function xmlTextReaderStandalone(reader: xmlTextReaderPtr): cint; EXTDECL; external xml2lib; 197 198(* 199 * Index lookup 200 *) 201function xmlTextReaderByteConsumed(reader: xmlTextReaderPtr): clong; EXTDECL; external xml2lib; 202 203(* 204 * New more complete APIs for simpler creation and reuse of readers 205 *) 206function xmlReaderWalker(doc: xmlDocPtr): xmlTextReaderPtr; EXTDECL; external xml2lib; 207function xmlReaderForDoc(cur: xmlCharPtr; URL, encoding: pchar; options: cint): xmlTextReaderPtr; EXTDECL; external xml2lib; 208function xmlReaderForFile(filename, encoding: pchar; options: cint): xmlTextReaderPtr; EXTDECL; external xml2lib; 209function xmlReaderForMemory(buffer: pchar; size: cint; URL, encoding: pchar; options: cint): xmlTextReaderPtr; EXTDECL; external xml2lib; 210function xmlReaderForFd(fd: cint; URL, encoding: pchar; options: cint): xmlTextReaderPtr; EXTDECL; external xml2lib; 211function xmlReaderForIO(ioread: xmlInputReadCallback; ioclose: xmlInputCloseCallback; ioctx: pointer; URL, encoding: pchar; options: cint): xmlTextReaderPtr; EXTDECL; external xml2lib; 212 213function xmlReaderNewWalker(reader: xmlTextReaderPtr; doc: xmlDocPtr): cint; EXTDECL; external xml2lib; 214function xmlReaderNewDoc(reader: xmlTextReaderPtr; cur: xmlCharPtr; URL, encoding: pchar; options: cint): cint; EXTDECL; external xml2lib; 215function xmlReaderNewFile(reader: xmlTextReaderPtr; filename, encoding: pchar; options: cint): cint; EXTDECL; external xml2lib; 216function xmlReaderNewMemory(reader: xmlTextReaderPtr; buffer: pchar; size: cint; URL, encoding: pchar; options: cint): cint; EXTDECL; external xml2lib; 217function xmlReaderNewFd(reader: xmlTextReaderPtr; fd: cint; URL, encoding: pchar; options: cint): cint; EXTDECL; external xml2lib; 218function xmlReaderNewIO(reader: xmlTextReaderPtr; ioread: xmlInputReadCallback; ioclose: xmlInputCloseCallback; ioctx: pointer; URL, encoding: pchar; options: cint): cint; EXTDECL; external xml2lib; 219 220(* 221 * Error handling extensions 222 *) 223function xmlTextReaderLocatorLineNumber(locator: xmlTextReaderLocatorPtr): cint; EXTDECL; external xml2lib; 224function xmlTextReaderLocatorBaseURI(locator: xmlTextReaderLocatorPtr): xmlCharPtr; EXTDECL; external xml2lib; 225procedure xmlTextReaderSetErrorHandler(reader: xmlTextReaderPtr; f: xmlTextReaderErrorFunc; arg: pointer); EXTDECL; external xml2lib; 226procedure xmlTextReaderSetStructuredErrorHandler(reader: xmlTextReaderPtr; f: xmlTextReaderErrorFunc; arg: pointer); EXTDECL; external xml2lib; 227procedure xmlTextReaderGetErrorHandler(reader: xmlTextReaderPtr; var f: xmlTextReaderErrorFunc; var arg: pointer); EXTDECL; external xml2lib; 228{$ENDIF} 229 230{$ENDIF} (* LIBXML_READER_ENABLED *) 231{$ENDIF} (* LIBXML_SCHEMAS_ENABLED *) 232 233