<?xml version="1.0" encoding="UTF-8" ?>
<class name="XMLParser" inherits="Reference" category="Core" version="3.1">
	<brief_description>
		Low-level class for creating parsers for XML files.
	</brief_description>
	<description>
		This class can serve as base to make custom XML parsers. Since XML is a very flexible standard, this interface is low level so it can be applied to any possible schema.
	</description>
	<tutorials>
	</tutorials>
	<demos>
	</demos>
	<methods>
		<method name="get_attribute_count" qualifiers="const">
			<return type="int">
			</return>
			<description>
				Get the amount of attributes in the current element.
			</description>
		</method>
		<method name="get_attribute_name" qualifiers="const">
			<return type="String">
			</return>
			<argument index="0" name="idx" type="int">
			</argument>
			<description>
				Get the name of the attribute specified by the index in [code]idx[/code] argument.
			</description>
		</method>
		<method name="get_attribute_value" qualifiers="const">
			<return type="String">
			</return>
			<argument index="0" name="idx" type="int">
			</argument>
			<description>
				Get the value of the attribute specified by the index in [code]idx[/code] argument.
			</description>
		</method>
		<method name="get_current_line" qualifiers="const">
			<return type="int">
			</return>
			<description>
				Get the current line in the parsed file (currently not implemented).
			</description>
		</method>
		<method name="get_named_attribute_value" qualifiers="const">
			<return type="String">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Get the value of a certain attribute of the current element by name. This will raise an error if the element has no such attribute.
			</description>
		</method>
		<method name="get_named_attribute_value_safe" qualifiers="const">
			<return type="String">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Get the value of a certain attribute of the current element by name. This will return an empty [String] if the attribute is not found.
			</description>
		</method>
		<method name="get_node_data" qualifiers="const">
			<return type="String">
			</return>
			<description>
				Get the contents of a text node. This will raise an error in any other type of node.
			</description>
		</method>
		<method name="get_node_name" qualifiers="const">
			<return type="String">
			</return>
			<description>
				Get the name of the current element node. This will raise an error if the current node type is not [code]NODE_ELEMENT[/code] nor [code]NODE_ELEMENT_END[/code]
			</description>
		</method>
		<method name="get_node_offset" qualifiers="const">
			<return type="int">
			</return>
			<description>
				Get the byte offset of the current node since the beginning of the file or buffer.
			</description>
		</method>
		<method name="get_node_type">
			<return type="int" enum="XMLParser.NodeType">
			</return>
			<description>
				Get the type of the current node. Compare with [code]NODE_*[/code] constants.
			</description>
		</method>
		<method name="has_attribute" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Check whether or not the current element has a certain attribute.
			</description>
		</method>
		<method name="is_empty" qualifiers="const">
			<return type="bool">
			</return>
			<description>
				Check whether the current element is empty (this only works for completely empty tags, e.g. &lt;element \&gt;).
			</description>
		</method>
		<method name="open">
			<return type="int" enum="Error">
			</return>
			<argument index="0" name="file" type="String">
			</argument>
			<description>
				Open a XML file for parsing. This returns an error code.
			</description>
		</method>
		<method name="open_buffer">
			<return type="int" enum="Error">
			</return>
			<argument index="0" name="buffer" type="PoolByteArray">
			</argument>
			<description>
				Open a XML raw buffer for parsing. This returns an error code.
			</description>
		</method>
		<method name="read">
			<return type="int" enum="Error">
			</return>
			<description>
				Read the next node of the file. This returns an error code.
			</description>
		</method>
		<method name="seek">
			<return type="int" enum="Error">
			</return>
			<argument index="0" name="position" type="int">
			</argument>
			<description>
				Move the buffer cursor to a certain offset (since the beginning) and read the next node there. This returns an error code.
			</description>
		</method>
		<method name="skip_section">
			<return type="void">
			</return>
			<description>
				Skips the current section. If the node contains other elements, they will be ignored and the cursor will go to the closing of the current element.
			</description>
		</method>
	</methods>
	<constants>
		<constant name="NODE_NONE" value="0" enum="NodeType">
			There's no node (no file or buffer opened)
		</constant>
		<constant name="NODE_ELEMENT" value="1" enum="NodeType">
			Element (tag)
		</constant>
		<constant name="NODE_ELEMENT_END" value="2" enum="NodeType">
			End of element
		</constant>
		<constant name="NODE_TEXT" value="3" enum="NodeType">
			Text node
		</constant>
		<constant name="NODE_COMMENT" value="4" enum="NodeType">
			Comment node
		</constant>
		<constant name="NODE_CDATA" value="5" enum="NodeType">
			CDATA content
		</constant>
		<constant name="NODE_UNKNOWN" value="6" enum="NodeType">
			Unknown node
		</constant>
	</constants>
</class>