# XMLReader functions

## Introduction

The XMLReader extension is an XML Pull parser. The reader acts as a cursor going forward on the document stream and stopping at each node on the way.

## Encoding

It is important to note that internally, libxml uses the UTF-8 encoding and as such, the encoding of the retrieved contents will always be in UTF-8 encoding.

## Installation

The XMLReader extension is available in PECL as of PHP 5.0.0 and is included and enabled as of PHP 5.1.0 by default. It can be enabled by adding the argument --enable-xmlreader (or --with-xmlreader before 5.1.0) to your configure line. The libxml extension is required.

## Predefined Classes

## XMLReader

## Methods

- XMLReader::close - Close the XMLReader input

- XMLReader::expand - Export current node to a DOM node

- XMLReader::getAttribute - Get value of attribute by name

- XMLReader::getAttributeNo - Get value of attribute by position

- XMLReader::getAttributeNs - Get value of attribute by name and URI

- XMLReader::getParserProperty - Indicates if parser property is set or not

- XMLReader::isValid - Indicates if document is valid

- XMLReader::lookupNamespace - Get URI for prefix in scope of node

- XMLReader::moveToAttribute - Positions reader on named attribute

- XMLReader::moveToAttributeNo - Positions reader on attribute by index

- XMLReader::moveToAttributeNs - Position reader on attribute by name and URI

- XMLReader::moveToElement - Move to parent element of current attribute node

- XMLReader::moveToFirstAttribute - Move to first attribute of node

- XMLReader::moveToNextAttribute - Move to next attribute of node

- XMLReader::next - Move to next element skipping children

- XMLReader::open - Set URI to be parsed

- XMLReader::read - Move to next node in stream

- XMLReader::setParserProperty - Set parser property

- XMLReader::setRelaxNGSchema - Set URI of RelaxNG schema to validate against

- XMLReader::setRelaxNGSchemaSource - Set string containing RelaxNG schema to validate against

- XMLReader::XML - Set string of data to be parsed

## Properties

Name | Type | Read-only | Description
--- | --- | --- | ---
attributeCount | int | yes | The number of attributes on the node
baseURI | string | yes | The base URI of the node
depth | int | yes | Depth of the node in the tree starting at 0
hasAttributes | bool | yes | Indicates if node has attributes
hasValue | bool | yes | Indicates if node has a text value
isDefault | bool | yes | Indicates if attribute is defaulted from DTD
isEmptyElement | bool | yes | Indicates if node is an empty element tag
localName | string | yes | The local name of the node
name | string | yes | The qualified name of the node
namespaceURI | string | yes | The URI of the namespace associated with the node
nodeType | int | yes | The node type for the node
prefix | string | yes | The prefix of the namespace associated with the node
value | string | yes | The text value of the node
xmlLang | string | yes | The xml:lang scope which the node resides

## Predefined Constants

The constants below are defined by this extension, and will only be available when the extension has either been compiled into PHP or dynamically loaded at runtime.

Warning

XMLReader uses class constants since PHP 5.1. Prior releases use global constants in the form `XMLREADER_ELEMENT`.

XMLReader Node Types
Constant | Value | Description
--- | --- | ---
`XMLReader::NONE` (integer) | 0 | No node type
`XMLReader::ELEMENT` (integer) | 1 | Start element
`XMLReader::ATTRIBUTE` (integer) | 2 | Attribute node
`XMLReader::TEXT` (integer) | 3 | Text node
`XMLReader::CDATA` (integer) | 4 | CDATA node
`XMLReader::ENTITY_REF` (integer) | 5 | Entity Reference node
`XMLReader::ENTITY` (integer) | 6 | Entity Declaration node
`XMLReader::PI` (integer) | 7 | Processing Instruction node
`XMLReader::COMMENT` (integer) | 8 | Comment node
`XMLReader::DOC` (integer) | 9 | Document node
`XMLReader::DOC_TYPE` (integer) | 10 | Document Type node
`XMLReader::DOC_FRAGMENT` (integer) | 11 | Document Fragment node
`XMLReader::NOTATION` (integer) | 12 | Notation node
`XMLReader::WHITESPACE` (integer) | 13 | Whitespace node
`XMLReader::SIGNIFICANT_WHITESPACE` (integer) | 14 | Significant Whitespace node
`XMLReader::END_ELEMENT` (integer) | 15 | End Element
`XMLReader::END_ENTITY` (integer) | 16 | End Entity
`XMLReader::XML_DECLARATION` (integer) | 17 | XML Declaration node

XMLReader Parser Options
Constant | Value | Description
--- | --- | ---
`XMLReader::LOADDTD` (integer) | 1 | Load DTD but do not validate
`XMLReader::DEFAULTATTRS` (integer) | 2 | Load DTD and default attributes but do not validate
`XMLReader::VALIDATE` (integer) | 3 | Load DTD and validate while parsing
`XMLReader::SUBST_ENTITIES` (integer) | 4 | Substitute entities and expand references

## Table of Contents

- XMLReader::close — Close the XMLReader input
- XMLReader::expand — Returns a copy of the current node as a DOM object
- XMLReader::getAttribute — Get the value of a named attribute
- XMLReader::getAttributeNo — Get the value of an attribute by index
- XMLReader::getAttributeNs — Get the value of an attribute by localname and URI
- XMLReader::getParserProperty — Indicates if specified property has been set
- XMLReader::isValid — Indicates if the parsed document is valid
- XMLReader::lookupNamespace — Lookup namespace for a prefix
- XMLReader::moveToAttribute — Move cursor to a named attribute
- XMLReader::moveToAttributeNo — Move cursor to an attribute by index
- XMLReader::moveToAttributeNs — Move cursor to a named attribute
- XMLReader::moveToElement — Position cursor on the parent Element of current Attribute
- XMLReader::moveToFirstAttribute — Position cursor on the first Attribute
- XMLReader::moveToNextAttribute — Position cursor on the next Attribute
- XMLReader::next — Move cursor to next node skipping all subtrees
- XMLReader::open — Set the URI containing the XML to parse
- XMLReader::read — Move to next node in document
- XMLReader::setParserProperty — Set or Unset parser options
- XMLReader::setRelaxNGSchema — Set the filename or URI for a RelaxNG Schema
- XMLReader::setRelaxNGSchemaSource — Set the data containing a RelaxNG Schema
- XMLReader::XML — Set the data containing the XML to parse