## xmlreader

xmlreader - the XMLReader implementation

API of the XML streaming API based on C# interfaces.

Author(s): Daniel Veillard

## Synopsis

    typedef xmlTextReader * xmlTextReaderPtr;
    typedef enum xmlParserSeverities;
    typedef enum xmlParserProperties;
    typedef enum xmlTextReaderMode;
    typedef struct _xmlTextReader xmlTextReader;
    typedef void * xmlTextReaderLocatorPtr;
    typedef enum xmlReaderTypes;
    xmlTextReaderPtr	xmlNewTextReaderFilename	(const char * URI);
    int	xmlTextReaderHasAttributes	(xmlTextReaderPtr reader);
    int	xmlTextReaderReadState		(xmlTextReaderPtr reader);
    xmlTextReaderPtr	xmlReaderForFile	(const char * filename,
    						 const char * encoding,
    						 int options);
    const xmlChar *	xmlTextReaderConstNamespaceUri	(xmlTextReaderPtr reader);
    xmlDocPtr	xmlTextReaderCurrentDoc	(xmlTextReaderPtr reader);
    int	xmlTextReaderGetParserLineNumber	(xmlTextReaderPtr reader);
    xmlNodePtr	xmlTextReaderExpand	(xmlTextReaderPtr reader);
    xmlChar *	xmlTextReaderXmlLang	(xmlTextReaderPtr reader);
    xmlTextReaderPtr	xmlReaderForDoc	(const xmlChar * cur,
    					 const char * URL,
    					 const char * encoding,
    					 int options);
    int	xmlReaderNewIO			(xmlTextReaderPtr reader,
    					 xmlInputReadCallback ioread,
    					 xmlInputCloseCallback ioclose,
    					 void * ioctx,
    					 const char * URL,
    					 const char * encoding,
    					 int options);
    int	xmlTextReaderClose		(xmlTextReaderPtr reader);
    xmlChar *	xmlTextReaderReadInnerXml	(xmlTextReaderPtr reader);
    const xmlChar *	xmlTextReaderConstEncoding	(xmlTextReaderPtr reader);
    int	xmlTextReaderNormalization	(xmlTextReaderPtr reader);
    int	xmlTextReaderGetParserProp	(xmlTextReaderPtr reader,
    					 int prop);
    int	xmlTextReaderMoveToAttribute	(xmlTextReaderPtr reader,
    					 const xmlChar * name);
    int	xmlTextReaderQuoteChar		(xmlTextReaderPtr reader);
    int	xmlTextReaderSetSchema		(xmlTextReaderPtr reader,
    					 xmlSchemaPtr schema);
    xmlChar *	xmlTextReaderValue	(xmlTextReaderPtr reader);
    int	xmlTextReaderIsValid		(xmlTextReaderPtr reader);
    int	xmlTextReaderMoveToFirstAttribute	(xmlTextReaderPtr reader);
    int	xmlTextReaderGetParserColumnNumber	(xmlTextReaderPtr reader);
    const xmlChar *	xmlTextReaderConstValue	(xmlTextReaderPtr reader);
    xmlTextReaderPtr	xmlNewTextReader	(xmlParserInputBufferPtr input,
    						 const char * URI);
    xmlChar *	xmlTextReaderGetAttributeNo	(xmlTextReaderPtr reader,
    						 int no);
    xmlChar *	xmlTextReaderGetAttributeNs	(xmlTextReaderPtr reader,
    						 const xmlChar * localName,
    						 const xmlChar * namespaceURI);
    const xmlChar *	xmlTextReaderConstName	(xmlTextReaderPtr reader);
    const xmlChar *	xmlTextReaderConstString	(xmlTextReaderPtr reader,
    						 const xmlChar * str);
    const xmlChar *	xmlTextReaderConstXmlVersion	(xmlTextReaderPtr reader);
    int	xmlTextReaderDepth		(xmlTextReaderPtr reader);
    xmlChar *	xmlTextReaderReadString	(xmlTextReaderPtr reader);
    int	xmlTextReaderIsDefault		(xmlTextReaderPtr reader);
    int	xmlTextReaderMoveToNextAttribute	(xmlTextReaderPtr reader);
    int	xmlReaderNewWalker		(xmlTextReaderPtr reader,
    					 xmlDocPtr doc);
    const xmlChar *	xmlTextReaderConstPrefix	(xmlTextReaderPtr reader);
    xmlTextReaderPtr	xmlReaderWalker	(xmlDocPtr doc);
    const xmlChar *	xmlTextReaderConstLocalName	(xmlTextReaderPtr reader);
    int	xmlTextReaderNodeType		(xmlTextReaderPtr reader);
    void	xmlFreeTextReader		(xmlTextReaderPtr reader);
    xmlChar *	xmlTextReaderName	(xmlTextReaderPtr reader);
    int	xmlTextReaderRead		(xmlTextReaderPtr reader);
    int	xmlTextReaderIsEmptyElement	(xmlTextReaderPtr reader);
    int	xmlReaderNewMemory		(xmlTextReaderPtr reader,
    					 const char * buffer,
    					 int size,
    					 const char * URL,
    					 const char * encoding,
    					 int options);
    int	xmlTextReaderSchemaValidateCtxt	(xmlTextReaderPtr reader,
    					 xmlSchemaValidCtxtPtr ctxt,
    					 int options);
    int	xmlTextReaderHasValue		(xmlTextReaderPtr reader);
    const xmlChar *	xmlTextReaderConstBaseUri	(xmlTextReaderPtr reader);
    xmlChar *	xmlTextReaderBaseUri	(xmlTextReaderPtr reader);
    int	xmlTextReaderMoveToAttributeNo	(xmlTextReaderPtr reader,
    					 int no);
    int	xmlTextReaderLocatorLineNumber	(xmlTextReaderLocatorPtr locator);
    int	xmlTextReaderMoveToAttributeNs	(xmlTextReaderPtr reader,
    					 const xmlChar * localName,
    					 const xmlChar * namespaceURI);
    int	xmlTextReaderNext		(xmlTextReaderPtr reader);
    int	xmlTextReaderAttributeCount	(xmlTextReaderPtr reader);
    xmlChar *	xmlTextReaderLookupNamespace	(xmlTextReaderPtr reader,
    						 const xmlChar * prefix);
    int	xmlTextReaderMoveToElement	(xmlTextReaderPtr reader);
    xmlTextReaderPtr	xmlReaderForIO	(xmlInputReadCallback ioread,
    					 xmlInputCloseCallback ioclose,
    					 void * ioctx,
    					 const char * URL,
    					 const char * encoding,
    					 int options);
    xmlChar *	xmlTextReaderReadOuterXml	(xmlTextReaderPtr reader);
    int	xmlTextReaderRelaxNGValidateCtxt	(xmlTextReaderPtr reader,
    						 xmlRelaxNGValidCtxtPtr ctxt,
    						 int options);
    xmlChar *	xmlTextReaderPrefix	(xmlTextReaderPtr reader);
    int	xmlTextReaderReadAttributeValue	(xmlTextReaderPtr reader);
    int	xmlTextReaderNextSibling	(xmlTextReaderPtr reader);
    typedef void xmlTextReaderErrorFunc		(void * arg,
    					 const char * msg,
    					 xmlParserSeverities severity,
    					 xmlTextReaderLocatorPtr locator);
    xmlTextReaderPtr	xmlReaderForFd	(int fd,
    					 const char * URL,
    					 const char * encoding,
    					 int options);
    xmlChar *	xmlTextReaderGetAttribute	(xmlTextReaderPtr reader,
    						 const xmlChar * name);
    xmlChar *	xmlTextReaderLocalName	(xmlTextReaderPtr reader);
    xmlNodePtr	xmlTextReaderPreserve	(xmlTextReaderPtr reader);
    xmlNodePtr	xmlTextReaderCurrentNode	(xmlTextReaderPtr reader);
    int	xmlTextReaderSetParserProp	(xmlTextReaderPtr reader,
    					 int prop,
    					 int value);
    xmlParserInputBufferPtr	xmlTextReaderGetRemainder	(xmlTextReaderPtr reader);
    void	xmlTextReaderSetErrorHandler	(xmlTextReaderPtr reader,
    					 xmlTextReaderErrorFunc f,
    					 void * arg);
    int	xmlTextReaderIsNamespaceDecl	(xmlTextReaderPtr reader);
    int	xmlReaderNewDoc			(xmlTextReaderPtr reader,
    					 const xmlChar * cur,
    					 const char * URL,
    					 const char * encoding,
    					 int options);
    int	xmlTextReaderPreservePattern	(xmlTextReaderPtr reader,
    					 const xmlChar * pattern,
    					 const xmlChar ** namespaces);
    const xmlChar *	xmlTextReaderConstXmlLang	(xmlTextReaderPtr reader);
    void	xmlTextReaderGetErrorHandler	(xmlTextReaderPtr reader,
    					 xmlTextReaderErrorFunc * f,
    					 void ** arg);
    void	xmlTextReaderSetStructuredErrorHandler	(xmlTextReaderPtr reader,
    						 xmlStructuredErrorFunc f,
    						 void * arg);
    int	xmlReaderNewFile		(xmlTextReaderPtr reader,
    					 const char * filename,
    					 const char * encoding,
    					 int options);
    int	xmlTextReaderRelaxNGSetSchema	(xmlTextReaderPtr reader,
    					 xmlRelaxNGPtr schema);
    int	xmlReaderNewFd			(xmlTextReaderPtr reader,
    					 int fd,
    					 const char * URL,
    					 const char * encoding,
    					 int options);
    int	xmlTextReaderRelaxNGValidate	(xmlTextReaderPtr reader,
    					 const char * rng);
    xmlTextReaderPtr	xmlReaderForMemory	(const char * buffer,
    						 int size,
    						 const char * URL,
    						 const char * encoding,
    						 int options);
    int	xmlTextReaderSetup		(xmlTextReaderPtr reader,
    					 xmlParserInputBufferPtr input,
    					 const char * URL,
    					 const char * encoding,
    					 int options);
    long	xmlTextReaderByteConsumed	(xmlTextReaderPtr reader);
    xmlChar *	xmlTextReaderLocatorBaseURI	(xmlTextReaderLocatorPtr locator);
    xmlChar *	xmlTextReaderNamespaceUri	(xmlTextReaderPtr reader);
    int	xmlTextReaderSchemaValidate	(xmlTextReaderPtr reader,
    					 const char * xsd);
    int	xmlTextReaderStandalone		(xmlTextReaderPtr reader);

## Description

## Details

### Enum xmlParserProperties

    enum xmlParserProperties {
        XML_PARSER_LOADDTD = 1
        XML_PARSER_DEFAULTATTRS = 2
        XML_PARSER_VALIDATE = 3
        XML_PARSER_SUBST_ENTITIES = 4
    };

### Enum xmlParserSeverities

    enum xmlParserSeverities {
        XML_PARSER_SEVERITY_VALIDITY_WARNING = 1
        XML_PARSER_SEVERITY_VALIDITY_ERROR = 2
        XML_PARSER_SEVERITY_WARNING = 3
        XML_PARSER_SEVERITY_ERROR = 4
    };

### Enum xmlReaderTypes

    enum xmlReaderTypes {
        XML_READER_TYPE_NONE = 0
        XML_READER_TYPE_ELEMENT = 1
        XML_READER_TYPE_ATTRIBUTE = 2
        XML_READER_TYPE_TEXT = 3
        XML_READER_TYPE_CDATA = 4
        XML_READER_TYPE_ENTITY_REFERENCE = 5
        XML_READER_TYPE_ENTITY = 6
        XML_READER_TYPE_PROCESSING_INSTRUCTION = 7
        XML_READER_TYPE_COMMENT = 8
        XML_READER_TYPE_DOCUMENT = 9
        XML_READER_TYPE_DOCUMENT_TYPE = 10
        XML_READER_TYPE_DOCUMENT_FRAGMENT = 11
        XML_READER_TYPE_NOTATION = 12
        XML_READER_TYPE_WHITESPACE = 13
        XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14
        XML_READER_TYPE_END_ELEMENT = 15
        XML_READER_TYPE_END_ENTITY = 16
        XML_READER_TYPE_XML_DECLARATION = 17
    };

### Structure xmlTextReader

    struct _xmlTextReader {
    The content of this structure is not made public by the API.
    } xmlTextReader;

### Typedef xmlTextReaderLocatorPtr

    void * xmlTextReaderLocatorPtr;

### Enum xmlTextReaderMode

    enum xmlTextReaderMode {
        XML_TEXTREADER_MODE_INITIAL = 0
        XML_TEXTREADER_MODE_INTERACTIVE = 1
        XML_TEXTREADER_MODE_ERROR = 2
        XML_TEXTREADER_MODE_EOF = 3
        XML_TEXTREADER_MODE_CLOSED = 4
        XML_TEXTREADER_MODE_READING = 5
    };

### Typedef xmlTextReaderPtr

    xmlTextReader * xmlTextReaderPtr;

Pointer to an xmlReader context.

### Function type xmlTextReaderErrorFunc

    void	xmlTextReaderErrorFunc		(void * arg,
    					 const char * msg,
    					 xmlParserSeverities severity,
    					 xmlTextReaderLocatorPtr locator)

Signature of an error callback from a reader parser

`arg`: | the user argument
`msg`: | the message
`severity`: | the severity of the error
`locator`: | a locator indicating where the error occurred

### xmlFreeTextReader ()

    void	xmlFreeTextReader		(xmlTextReaderPtr reader)

Deallocate all the resources associated to the reader

`reader`: | the xmlTextReaderPtr

### xmlNewTextReader ()

    xmlTextReaderPtr	xmlNewTextReader	(xmlParserInputBufferPtr input,
    						 const char * URI)

Create an xmlTextReader structure fed with @input

`input`: | the xmlParserInputBufferPtr used to read data
`URI`: | the URI information for the source if available
`Returns`: | the new xmlTextReaderPtr or NULL in case of error

### xmlNewTextReaderFilename ()

    xmlTextReaderPtr	xmlNewTextReaderFilename	(const char * URI)

Create an xmlTextReader structure fed with the resource at @URI

`URI`: | the URI of the resource to process
`Returns`: | the new xmlTextReaderPtr or NULL in case of error

### xmlReaderForDoc ()

    xmlTextReaderPtr	xmlReaderForDoc	(const xmlChar * cur,
    					 const char * URL,
    					 const char * encoding,
    					 int options)

Create an xmltextReader for an XML in-memory document. The parsing flags @options are a combination of xmlParserOption.

`cur`: | a pointer to a zero terminated string
`URL`: | the base URL to use for the document
`encoding`: | the document encoding, or NULL
`options`: | a combination of xmlParserOption
`Returns`: | the new reader or NULL in case of error.

### xmlReaderForFd ()

    xmlTextReaderPtr	xmlReaderForFd	(int fd,
    					 const char * URL,
    					 const char * encoding,
    					 int options)

Create an xmltextReader for an XML from a file descriptor. The parsing flags @options are a combination of xmlParserOption. NOTE that the file descriptor will not be closed when the reader is closed or reset.

`fd`: | an open file descriptor
`URL`: | the base URL to use for the document
`encoding`: | the document encoding, or NULL
`options`: | a combination of xmlParserOption
`Returns`: | the new reader or NULL in case of error.

### xmlReaderForFile ()

    xmlTextReaderPtr	xmlReaderForFile	(const char * filename,
    						 const char * encoding,
    						 int options)

parse an XML file from the filesystem or the network. The parsing flags @options are a combination of xmlParserOption.

`filename`: | a file or URL
`encoding`: | the document encoding, or NULL
`options`: | a combination of xmlParserOption
`Returns`: | the new reader or NULL in case of error.

### xmlReaderForIO ()

    xmlTextReaderPtr	xmlReaderForIO	(xmlInputReadCallback ioread,
    					 xmlInputCloseCallback ioclose,
    					 void * ioctx,
    					 const char * URL,
    					 const char * encoding,
    					 int options)

Create an xmltextReader for an XML document from I/O functions and source. The parsing flags @options are a combination of xmlParserOption.

`ioread`: | an I/O read function
`ioclose`: | an I/O close function
`ioctx`: | an I/O handler
`URL`: | the base URL to use for the document
`encoding`: | the document encoding, or NULL
`options`: | a combination of xmlParserOption
`Returns`: | the new reader or NULL in case of error.

### xmlReaderForMemory ()

    xmlTextReaderPtr	xmlReaderForMemory	(const char * buffer,
    						 int size,
    						 const char * URL,
    						 const char * encoding,
    						 int options)

Create an xmltextReader for an XML in-memory document. The parsing flags @options are a combination of xmlParserOption.

`buffer`: | a pointer to a char array
`size`: | the size of the array
`URL`: | the base URL to use for the document
`encoding`: | the document encoding, or NULL
`options`: | a combination of xmlParserOption
`Returns`: | the new reader or NULL in case of error.

### xmlReaderNewDoc ()

    int	xmlReaderNewDoc			(xmlTextReaderPtr reader,
    					 const xmlChar * cur,
    					 const char * URL,
    					 const char * encoding,
    					 int options)

Setup an xmltextReader to parse an XML in-memory document. The parsing flags @options are a combination of xmlParserOption. This reuses the existing @reader xmlTextReader.

`reader`: | an XML reader
`cur`: | a pointer to a zero terminated string
`URL`: | the base URL to use for the document
`encoding`: | the document encoding, or NULL
`options`: | a combination of xmlParserOption
`Returns`: | 0 in case of success and -1 in case of error

### xmlReaderNewFd ()

    int	xmlReaderNewFd			(xmlTextReaderPtr reader,
    					 int fd,
    					 const char * URL,
    					 const char * encoding,
    					 int options)

Setup an xmltextReader to parse an XML from a file descriptor. NOTE that the file descriptor will not be closed when the reader is closed or reset. The parsing flags @options are a combination of xmlParserOption. This reuses the existing @reader xmlTextReader.

`reader`: | an XML reader
`fd`: | an open file descriptor
`URL`: | the base URL to use for the document
`encoding`: | the document encoding, or NULL
`options`: | a combination of xmlParserOption
`Returns`: | 0 in case of success and -1 in case of error

### xmlReaderNewFile ()

    int	xmlReaderNewFile		(xmlTextReaderPtr reader,
    					 const char * filename,
    					 const char * encoding,
    					 int options)

parse an XML file from the filesystem or the network. The parsing flags @options are a combination of xmlParserOption. This reuses the existing @reader xmlTextReader.

`reader`: | an XML reader
`filename`: | a file or URL
`encoding`: | the document encoding, or NULL
`options`: | a combination of xmlParserOption
`Returns`: | 0 in case of success and -1 in case of error

### xmlReaderNewIO ()

    int	xmlReaderNewIO			(xmlTextReaderPtr reader,
    					 xmlInputReadCallback ioread,
    					 xmlInputCloseCallback ioclose,
    					 void * ioctx,
    					 const char * URL,
    					 const char * encoding,
    					 int options)

Setup an xmltextReader to parse an XML document from I/O functions and source. The parsing flags @options are a combination of xmlParserOption. This reuses the existing @reader xmlTextReader.

`reader`: | an XML reader
`ioread`: | an I/O read function
`ioclose`: | an I/O close function
`ioctx`: | an I/O handler
`URL`: | the base URL to use for the document
`encoding`: | the document encoding, or NULL
`options`: | a combination of xmlParserOption
`Returns`: | 0 in case of success and -1 in case of error

### xmlReaderNewMemory ()

    int	xmlReaderNewMemory		(xmlTextReaderPtr reader,
    					 const char * buffer,
    					 int size,
    					 const char * URL,
    					 const char * encoding,
    					 int options)

Setup an xmltextReader to parse an XML in-memory document. The parsing flags @options are a combination of xmlParserOption. This reuses the existing @reader xmlTextReader.

`reader`: | an XML reader
`buffer`: | a pointer to a char array
`size`: | the size of the array
`URL`: | the base URL to use for the document
`encoding`: | the document encoding, or NULL
`options`: | a combination of xmlParserOption
`Returns`: | 0 in case of success and -1 in case of error

### xmlReaderNewWalker ()

    int	xmlReaderNewWalker		(xmlTextReaderPtr reader,
    					 xmlDocPtr doc)

Setup an xmltextReader to parse a preparsed XML document. This reuses the existing @reader xmlTextReader.

`reader`: | an XML reader
`doc`: | a preparsed document
`Returns`: | 0 in case of success and -1 in case of error

### xmlReaderWalker ()

    xmlTextReaderPtr	xmlReaderWalker	(xmlDocPtr doc)

Create an xmltextReader for a preparsed document.

`doc`: | a preparsed document
`Returns`: | the new reader or NULL in case of error.

### xmlTextReaderAttributeCount ()

    int	xmlTextReaderAttributeCount	(xmlTextReaderPtr reader)

Provides the number of attributes of the current node

`reader`: | the xmlTextReaderPtr used
`Returns`: | 0 i no attributes, -1 in case of error or the attribute count

### xmlTextReaderBaseUri ()

    xmlChar *	xmlTextReaderBaseUri	(xmlTextReaderPtr reader)

The base URI of the node.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the base URI or NULL if not available, if non NULL it need to be freed by the caller.

### xmlTextReaderByteConsumed ()

    long	xmlTextReaderByteConsumed	(xmlTextReaderPtr reader)

This function provides the current index of the parser used by the reader, relative to the start of the current entity. This function actually just wraps a call to xmlBytesConsumed() for the parser context associated with the reader. See xmlBytesConsumed() for more information.

`reader`: | an XML reader
`Returns`: | the index in bytes from the beginning of the entity or -1 in case the index could not be computed.

### xmlTextReaderClose ()

    int	xmlTextReaderClose		(xmlTextReaderPtr reader)

This method releases any resources allocated by the current instance changes the state to Closed and close any underlying input.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 0 or -1 in case of error

### xmlTextReaderConstBaseUri ()

    const xmlChar *	xmlTextReaderConstBaseUri	(xmlTextReaderPtr reader)

The base URI of the node.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the base URI or NULL if not available, the string will be deallocated with the reader

### xmlTextReaderConstEncoding ()

    const xmlChar *	xmlTextReaderConstEncoding	(xmlTextReaderPtr reader)

Determine the encoding of the document being read.

`reader`: | the xmlTextReaderPtr used
`Returns`: | a string containing the encoding of the document or NULL in case of error. The string is deallocated with the reader.

### xmlTextReaderConstLocalName ()

    const xmlChar *	xmlTextReaderConstLocalName	(xmlTextReaderPtr reader)

The local name of the node.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the local name or NULL if not available, the string will be deallocated with the reader.

### xmlTextReaderConstName ()

    const xmlChar *	xmlTextReaderConstName	(xmlTextReaderPtr reader)

The qualified name of the node, equal to Prefix :LocalName.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the local name or NULL if not available, the string is deallocated with the reader.

### xmlTextReaderConstNamespaceUri ()

    const xmlChar *	xmlTextReaderConstNamespaceUri	(xmlTextReaderPtr reader)

The URI defining the namespace associated with the node.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the namespace URI or NULL if not available, the string will be deallocated with the reader

### xmlTextReaderConstPrefix ()

    const xmlChar *	xmlTextReaderConstPrefix	(xmlTextReaderPtr reader)

A shorthand reference to the namespace associated with the node.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the prefix or NULL if not available, the string is deallocated with the reader.

### xmlTextReaderConstString ()

    const xmlChar *	xmlTextReaderConstString	(xmlTextReaderPtr reader,
    						 const xmlChar * str)

Get an interned string from the reader, allows for example to speedup string name comparisons

`reader`: | the xmlTextReaderPtr used
`str`: | the string to intern.
`Returns`: | an interned copy of the string or NULL in case of error. The string will be deallocated with the reader.

### xmlTextReaderConstValue ()

    const xmlChar *	xmlTextReaderConstValue	(xmlTextReaderPtr reader)

Provides the text value of the node if present

`reader`: | the xmlTextReaderPtr used
`Returns`: | the string or NULL if not available. The result will be deallocated on the next Read() operation.

### xmlTextReaderConstXmlLang ()

    const xmlChar *	xmlTextReaderConstXmlLang	(xmlTextReaderPtr reader)

The xml:lang scope within which the node resides.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the xml:lang value or NULL if none exists.

### xmlTextReaderConstXmlVersion ()

    const xmlChar *	xmlTextReaderConstXmlVersion	(xmlTextReaderPtr reader)

Determine the XML version of the document being read.

`reader`: | the xmlTextReaderPtr used
`Returns`: | a string containing the XML version of the document or NULL in case of error. The string is deallocated with the reader.

### xmlTextReaderCurrentDoc ()

    xmlDocPtr	xmlTextReaderCurrentDoc	(xmlTextReaderPtr reader)

Hacking interface allowing to get the xmlDocPtr corresponding to the current document being accessed by the xmlTextReader. NOTE: as a result of this call, the reader will not destroy the associated XML document and calling xmlFreeDoc() on the result is needed once the reader parsing has finished.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the xmlDocPtr or NULL in case of error.

### xmlTextReaderCurrentNode ()

    xmlNodePtr	xmlTextReaderCurrentNode	(xmlTextReaderPtr reader)

Hacking interface allowing to get the xmlNodePtr corresponding to the current node being accessed by the xmlTextReader. This is dangerous because the underlying node may be destroyed on the next Reads.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the xmlNodePtr or NULL in case of error.

### xmlTextReaderDepth ()

    int	xmlTextReaderDepth		(xmlTextReaderPtr reader)

The depth of the node in the tree.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the depth or -1 in case of error

### xmlTextReaderExpand ()

    xmlNodePtr	xmlTextReaderExpand	(xmlTextReaderPtr reader)

Reads the contents of the current node and the full subtree. It then makes the subtree available until the next xmlTextReaderRead() call

`reader`: | the xmlTextReaderPtr used
`Returns`: | a node pointer valid until the next xmlTextReaderRead() call or NULL in case of error.

### xmlTextReaderGetAttribute ()

    xmlChar *	xmlTextReaderGetAttribute	(xmlTextReaderPtr reader,
    						 const xmlChar * name)

Provides the value of the attribute with the specified qualified name.

`reader`: | the xmlTextReaderPtr used
`name`: | the qualified name of the attribute.
`Returns`: | a string containing the value of the specified attribute, or NULL in case of error. The string must be deallocated by the caller.

### xmlTextReaderGetAttributeNo ()

    xmlChar *	xmlTextReaderGetAttributeNo	(xmlTextReaderPtr reader,
    						 int no)

Provides the value of the attribute with the specified index relative to the containing element.

`reader`: | the xmlTextReaderPtr used
`no`: | the zero-based index of the attribute relative to the containing element
`Returns`: | a string containing the value of the specified attribute, or NULL in case of error. The string must be deallocated by the caller.

### xmlTextReaderGetAttributeNs ()

    xmlChar *	xmlTextReaderGetAttributeNs	(xmlTextReaderPtr reader,
    						 const xmlChar * localName,
    						 const xmlChar * namespaceURI)

Provides the value of the specified attribute

`reader`: | the xmlTextReaderPtr used
`localName`: | the local name of the attribute.
`namespaceURI`: | the namespace URI of the attribute.
`Returns`: | a string containing the value of the specified attribute, or NULL in case of error. The string must be deallocated by the caller.

### xmlTextReaderGetErrorHandler ()

    void	xmlTextReaderGetErrorHandler	(xmlTextReaderPtr reader,
    					 xmlTextReaderErrorFunc * f,
    					 void ** arg)

Retrieve the error callback function and user argument.

`reader`: | the xmlTextReaderPtr used
`f`: | the callback function or NULL is no callback has been registered
`arg`: | a user argument

### xmlTextReaderGetParserColumnNumber ()

    int	xmlTextReaderGetParserColumnNumber	(xmlTextReaderPtr reader)

Provide the column number of the current parsing point.

`reader`: | the user data (XML reader context)
`Returns`: | an int or 0 if not available

### xmlTextReaderGetParserLineNumber ()

    int	xmlTextReaderGetParserLineNumber	(xmlTextReaderPtr reader)

Provide the line number of the current parsing point.

`reader`: | the user data (XML reader context)
`Returns`: | an int or 0 if not available

### xmlTextReaderGetParserProp ()

    int	xmlTextReaderGetParserProp	(xmlTextReaderPtr reader,
    					 int prop)

Read the parser internal property.

`reader`: | the xmlTextReaderPtr used
`prop`: | the xmlParserProperties to get
`Returns`: | the value, usually 0 or 1, or -1 in case of error.

### xmlTextReaderGetRemainder ()

    xmlParserInputBufferPtr	xmlTextReaderGetRemainder	(xmlTextReaderPtr reader)

Method to get the remainder of the buffered XML. this method stops the parser, set its state to End Of File and return the input stream with what is left that the parser did not use. The implementation is not good, the parser certainly progressed past what's left in reader->input, and there is an allocation problem. Best would be to rewrite it differently.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the xmlParserInputBufferPtr attached to the XML or NULL in case of error.

### xmlTextReaderHasAttributes ()

    int	xmlTextReaderHasAttributes	(xmlTextReaderPtr reader)

Whether the node has attributes.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 if true, 0 if false, and -1 in case or error

### xmlTextReaderHasValue ()

    int	xmlTextReaderHasValue		(xmlTextReaderPtr reader)

Whether the node can have a text value.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 if true, 0 if false, and -1 in case or error

### xmlTextReaderIsDefault ()

    int	xmlTextReaderIsDefault		(xmlTextReaderPtr reader)

Whether an Attribute node was generated from the default value defined in the DTD or schema.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 0 if not defaulted, 1 if defaulted, and -1 in case of error

### xmlTextReaderIsEmptyElement ()

    int	xmlTextReaderIsEmptyElement	(xmlTextReaderPtr reader)

Check if the current node is empty

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 if empty, 0 if not and -1 in case of error

### xmlTextReaderIsNamespaceDecl ()

    int	xmlTextReaderIsNamespaceDecl	(xmlTextReaderPtr reader)

Determine whether the current node is a namespace declaration rather than a regular attribute.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 if the current node is a namespace declaration, 0 if it is a regular attribute or other type of node, or -1 in case of error.

### xmlTextReaderIsValid ()

    int	xmlTextReaderIsValid		(xmlTextReaderPtr reader)

Retrieve the validity status from the parser context

`reader`: | the xmlTextReaderPtr used
`Returns`: | the flag value 1 if valid, 0 if no, and -1 in case of error

### xmlTextReaderLocalName ()

    xmlChar *	xmlTextReaderLocalName	(xmlTextReaderPtr reader)

The local name of the node.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the local name or NULL if not available, if non NULL it need to be freed by the caller.

### xmlTextReaderLocatorBaseURI ()

    xmlChar *	xmlTextReaderLocatorBaseURI	(xmlTextReaderLocatorPtr locator)

Obtain the base URI for the given locator.

`locator`: | the xmlTextReaderLocatorPtr used
`Returns`: | the base URI or NULL in case of error, if non NULL it need to be freed by the caller.

### xmlTextReaderLocatorLineNumber ()

    int	xmlTextReaderLocatorLineNumber	(xmlTextReaderLocatorPtr locator)

Obtain the line number for the given locator.

`locator`: | the xmlTextReaderLocatorPtr used
`Returns`: | the line number or -1 in case of error.

### xmlTextReaderLookupNamespace ()

    xmlChar *	xmlTextReaderLookupNamespace	(xmlTextReaderPtr reader,
    						 const xmlChar * prefix)

Resolves a namespace prefix in the scope of the current element.

`reader`: | the xmlTextReaderPtr used
`prefix`: | the prefix whose namespace URI is to be resolved. To return the default namespace, specify NULL
`Returns`: | a string containing the namespace URI to which the prefix maps or NULL in case of error. The string must be deallocated by the caller.

### xmlTextReaderMoveToAttribute ()

    int	xmlTextReaderMoveToAttribute	(xmlTextReaderPtr reader,
    					 const xmlChar * name)

Moves the position of the current instance to the attribute with the specified qualified name.

`reader`: | the xmlTextReaderPtr used
`name`: | the qualified name of the attribute.
`Returns`: | 1 in case of success, -1 in case of error, 0 if not found

### xmlTextReaderMoveToAttributeNo ()

    int	xmlTextReaderMoveToAttributeNo	(xmlTextReaderPtr reader,
    					 int no)

Moves the position of the current instance to the attribute with the specified index relative to the containing element.

`reader`: | the xmlTextReaderPtr used
`no`: | the zero-based index of the attribute relative to the containing element.
`Returns`: | 1 in case of success, -1 in case of error, 0 if not found

### xmlTextReaderMoveToAttributeNs ()

    int	xmlTextReaderMoveToAttributeNs	(xmlTextReaderPtr reader,
    					 const xmlChar * localName,
    					 const xmlChar * namespaceURI)

Moves the position of the current instance to the attribute with the specified local name and namespace URI.

`reader`: | the xmlTextReaderPtr used
`localName`: | the local name of the attribute.
`namespaceURI`: | the namespace URI of the attribute.
`Returns`: | 1 in case of success, -1 in case of error, 0 if not found

### xmlTextReaderMoveToElement ()

    int	xmlTextReaderMoveToElement	(xmlTextReaderPtr reader)

Moves the position of the current instance to the node that contains the current Attribute node.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 in case of success, -1 in case of error, 0 if not moved

### xmlTextReaderMoveToFirstAttribute ()

    int	xmlTextReaderMoveToFirstAttribute	(xmlTextReaderPtr reader)

Moves the position of the current instance to the first attribute associated with the current node.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 in case of success, -1 in case of error, 0 if not found

### xmlTextReaderMoveToNextAttribute ()

    int	xmlTextReaderMoveToNextAttribute	(xmlTextReaderPtr reader)

Moves the position of the current instance to the next attribute associated with the current node.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 in case of success, -1 in case of error, 0 if not found

### xmlTextReaderName ()

    xmlChar *	xmlTextReaderName	(xmlTextReaderPtr reader)

The qualified name of the node, equal to Prefix :LocalName.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the local name or NULL if not available, if non NULL it need to be freed by the caller.

### xmlTextReaderNamespaceUri ()

    xmlChar *	xmlTextReaderNamespaceUri	(xmlTextReaderPtr reader)

The URI defining the namespace associated with the node.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the namespace URI or NULL if not available, if non NULL it need to be freed by the caller.

### xmlTextReaderNext ()

    int	xmlTextReaderNext		(xmlTextReaderPtr reader)

Skip to the node following the current one in document order while avoiding the subtree if any.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 if the node was read successfully, 0 if there is no more nodes to read, or -1 in case of error

### xmlTextReaderNextSibling ()

    int	xmlTextReaderNextSibling	(xmlTextReaderPtr reader)

Skip to the node following the current one in document order while avoiding the subtree if any. Currently implemented only for Readers built on a document

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 if the node was read successfully, 0 if there is no more nodes to read, or -1 in case of error

### xmlTextReaderNodeType ()

    int	xmlTextReaderNodeType		(xmlTextReaderPtr reader)

Get the node type of the current node Reference: http://www.gnu.org/software/dotgnu/pnetlib-doc/System/Xml/XmlNodeType.html

`reader`: | the xmlTextReaderPtr used
`Returns`: | the xmlReaderTypes of the current node or -1 in case of error

### xmlTextReaderNormalization ()

    int	xmlTextReaderNormalization	(xmlTextReaderPtr reader)

The value indicating whether to normalize white space and attribute values. Since attribute value and end of line normalizations are a MUST in the XML specification only the value true is accepted. The broken behaviour of accepting out of range character entities like &#0; is of course not supported either.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 or -1 in case of error.

### xmlTextReaderPrefix ()

    xmlChar *	xmlTextReaderPrefix	(xmlTextReaderPtr reader)

A shorthand reference to the namespace associated with the node.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the prefix or NULL if not available, if non NULL it need to be freed by the caller.

### xmlTextReaderPreserve ()

    xmlNodePtr	xmlTextReaderPreserve	(xmlTextReaderPtr reader)

This tells the XML Reader to preserve the current node. The caller must also use xmlTextReaderCurrentDoc() to keep an handle on the resulting document once parsing has finished

`reader`: | the xmlTextReaderPtr used
`Returns`: | the xmlNodePtr or NULL in case of error.

### xmlTextReaderPreservePattern ()

    int	xmlTextReaderPreservePattern	(xmlTextReaderPtr reader,
    					 const xmlChar * pattern,
    					 const xmlChar ** namespaces)

This tells the XML Reader to preserve all nodes matched by the pattern. The caller must also use xmlTextReaderCurrentDoc() to keep an handle on the resulting document once parsing has finished

`reader`: | the xmlTextReaderPtr used
`pattern`: | an XPath subset pattern
`namespaces`: | the prefix definitions, array of [URI, prefix] or NULL
`Returns`: | a non-negative number in case of success and -1 in case of error

### xmlTextReaderQuoteChar ()

    int	xmlTextReaderQuoteChar		(xmlTextReaderPtr reader)

The quotation mark character used to enclose the value of an attribute.

`reader`: | the xmlTextReaderPtr used
`Returns`: | " or ' and -1 in case of error

### xmlTextReaderRead ()

    int	xmlTextReaderRead		(xmlTextReaderPtr reader)

Moves the position of the current instance to the next node in the stream, exposing its properties.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 if the node was read successfully, 0 if there is no more nodes to read, or -1 in case of error

### xmlTextReaderReadAttributeValue ()

    int	xmlTextReaderReadAttributeValue	(xmlTextReaderPtr reader)

Parses an attribute value into one or more Text and EntityReference nodes.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 in case of success, 0 if the reader was not positioned on an attribute node or all the attribute values have been read, or -1 in case of error.

### xmlTextReaderReadInnerXml ()

    xmlChar *	xmlTextReaderReadInnerXml	(xmlTextReaderPtr reader)

Reads the contents of the current node, including child nodes and markup.

`reader`: | the xmlTextReaderPtr used
`Returns`: | a string containing the XML content, or NULL if the current node is neither an element nor attribute, or has no child nodes. The string must be deallocated by the caller.

### xmlTextReaderReadOuterXml ()

    xmlChar *	xmlTextReaderReadOuterXml	(xmlTextReaderPtr reader)

Reads the contents of the current node, including child nodes and markup.

`reader`: | the xmlTextReaderPtr used
`Returns`: | a string containing the node and any XML content, or NULL if the current node cannot be serialized. The string must be deallocated by the caller.

### xmlTextReaderReadState ()

    int	xmlTextReaderReadState		(xmlTextReaderPtr reader)

Gets the read state of the reader.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the state value, or -1 in case of error

### xmlTextReaderReadString ()

    xmlChar *	xmlTextReaderReadString	(xmlTextReaderPtr reader)

Reads the contents of an element or a text node as a string.

`reader`: | the xmlTextReaderPtr used
`Returns`: | a string containing the contents of the Element or Text node, or NULL if the reader is positioned on any other type of node. The string must be deallocated by the caller.

### xmlTextReaderRelaxNGSetSchema ()

    int	xmlTextReaderRelaxNGSetSchema	(xmlTextReaderPtr reader,
    					 xmlRelaxNGPtr schema)

Use RelaxNG to validate the document as it is processed. Activation is only possible before the first Read(). if @schema is NULL, then RelaxNG validation is deactivated. @ The @schema should not be freed until the reader is deallocated or its use has been deactivated.

`reader`: | the xmlTextReaderPtr used
`schema`: | a precompiled RelaxNG schema
`Returns`: | 0 in case the RelaxNG validation could be (de)activated and -1 in case of error.

### xmlTextReaderRelaxNGValidate ()

    int	xmlTextReaderRelaxNGValidate	(xmlTextReaderPtr reader,
    					 const char * rng)

Use RelaxNG schema to validate the document as it is processed. Activation is only possible before the first Read(). If @rng is NULL, then RelaxNG schema validation is deactivated.

`reader`: | the xmlTextReaderPtr used
`rng`: | the path to a RelaxNG schema or NULL
`Returns`: | 0 in case the schemas validation could be (de)activated and -1 in case of error.

### xmlTextReaderRelaxNGValidateCtxt ()

    int	xmlTextReaderRelaxNGValidateCtxt	(xmlTextReaderPtr reader,
    						 xmlRelaxNGValidCtxtPtr ctxt,
    						 int options)

Use RelaxNG schema context to validate the document as it is processed. Activation is only possible before the first Read(). If @ctxt is NULL, then RelaxNG schema validation is deactivated.

`reader`: | the xmlTextReaderPtr used
`ctxt`: | the RelaxNG schema validation context or NULL
`options`: | options (not used yet)
`Returns`: | 0 in case the schemas validation could be (de)activated and -1 in case of error.

### xmlTextReaderSchemaValidate ()

    int	xmlTextReaderSchemaValidate	(xmlTextReaderPtr reader,
    					 const char * xsd)

Use W3C XSD schema to validate the document as it is processed. Activation is only possible before the first Read(). If @xsd is NULL, then XML Schema validation is deactivated.

`reader`: | the xmlTextReaderPtr used
`xsd`: | the path to a W3C XSD schema or NULL
`Returns`: | 0 in case the schemas validation could be (de)activated and -1 in case of error.

### xmlTextReaderSchemaValidateCtxt ()

    int	xmlTextReaderSchemaValidateCtxt	(xmlTextReaderPtr reader,
    					 xmlSchemaValidCtxtPtr ctxt,
    					 int options)

Use W3C XSD schema context to validate the document as it is processed. Activation is only possible before the first Read(). If @ctxt is NULL, then XML Schema validation is deactivated.

`reader`: | the xmlTextReaderPtr used
`ctxt`: | the XML Schema validation context or NULL
`options`: | options (not used yet)
`Returns`: | 0 in case the schemas validation could be (de)activated and -1 in case of error.

### xmlTextReaderSetErrorHandler ()

    void	xmlTextReaderSetErrorHandler	(xmlTextReaderPtr reader,
    					 xmlTextReaderErrorFunc f,
    					 void * arg)

Register a callback function that will be called on error and warnings. If @f is NULL, the default error and warning handlers are restored.

`reader`: | the xmlTextReaderPtr used
`f`: | the callback function to call on error and warnings
`arg`: | a user argument to pass to the callback function

### xmlTextReaderSetParserProp ()

    int	xmlTextReaderSetParserProp	(xmlTextReaderPtr reader,
    					 int prop,
    					 int value)

Change the parser processing behaviour by changing some of its internal properties. Note that some properties can only be changed before any read has been done.

`reader`: | the xmlTextReaderPtr used
`prop`: | the xmlParserProperties to set
`value`: | usually 0 or 1 to (de)activate it
`Returns`: | 0 if the call was successful, or -1 in case of error

### xmlTextReaderSetSchema ()

    int	xmlTextReaderSetSchema		(xmlTextReaderPtr reader,
    					 xmlSchemaPtr schema)

Use XSD Schema to validate the document as it is processed. Activation is only possible before the first Read(). if @schema is NULL, then Schema validation is deactivated. The @schema should not be freed until the reader is deallocated or its use has been deactivated.

`reader`: | the xmlTextReaderPtr used
`schema`: | a precompiled Schema schema
`Returns`: | 0 in case the Schema validation could be (de)activated and -1 in case of error.

### xmlTextReaderSetStructuredErrorHandler ()

    void	xmlTextReaderSetStructuredErrorHandler	(xmlTextReaderPtr reader,
    						 xmlStructuredErrorFunc f,
    						 void * arg)

Register a callback function that will be called on error and warnings. If @f is NULL, the default error and warning handlers are restored.

`reader`: | the xmlTextReaderPtr used
`f`: | the callback function to call on error and warnings
`arg`: | a user argument to pass to the callback function

### xmlTextReaderSetup ()

    int	xmlTextReaderSetup		(xmlTextReaderPtr reader,
    					 xmlParserInputBufferPtr input,
    					 const char * URL,
    					 const char * encoding,
    					 int options)

Setup an XML reader with new options

`reader`: | an XML reader
`input`: | xmlParserInputBufferPtr used to feed the reader, will be destroyed with it.
`URL`: | the base URL to use for the document
`encoding`: | the document encoding, or NULL
`options`: | a combination of xmlParserOption
`Returns`: | 0 in case of success and -1 in case of error.

### xmlTextReaderStandalone ()

    int	xmlTextReaderStandalone		(xmlTextReaderPtr reader)

Determine the standalone status of the document being read.

`reader`: | the xmlTextReaderPtr used
`Returns`: | 1 if the document was declared to be standalone, 0 if it was declared to be not standalone, or -1 if the document did not specify its standalone status or in case of error.

### xmlTextReaderValue ()

    xmlChar *	xmlTextReaderValue	(xmlTextReaderPtr reader)

Provides the text value of the node if present

`reader`: | the xmlTextReaderPtr used
`Returns`: | the string or NULL if not available. The result must be deallocated with xmlFree()

### xmlTextReaderXmlLang ()

    xmlChar *	xmlTextReaderXmlLang	(xmlTextReaderPtr reader)

The xml:lang scope within which the node resides.

`reader`: | the xmlTextReaderPtr used
`Returns`: | the xml:lang value or NULL if none exists., if non NULL it need to be freed by the caller.