## Documentation

Table of Contents
Class Inheritance Tree
Widget Screenshots
Package groups

## Index

Package: XML (generic)

- Goto spec source

# Description

    generic
       type XML_Specific_Data is private;
       --  The type of the extra data that can be attached to each node of the
       --  XML tree. See for instance the package Glib.Glade.

    package Glib.XML is

This package provides a simple minded XML parser to be used with Gate.

# Types

### XML_Specific_Data

- Goto declaration in source

    type XML_Specific_Data is private;

The type of the extra data that can be attached to each node of the XML tree. See for instance the package Glib.Glade.

### Node

- Goto declaration in source
- Goto full declaration in source

    type Node;

### Node_Ptr

- Goto declaration in source

    type Node_Ptr is access all Node;

Pointer to a node of the XML tree.

### Free_Specific_Data

- Goto declaration in source

    type Free_Specific_Data is access
         procedure (Data : in out XML_Specific_Data);

# Subprograms & Entries

### Free

- Goto spec in source

    procedure Free is new Unchecked_Deallocation (String, String_Ptr);

<doc_ignore>

### Parse

- Goto spec in source

    function Parse (File: String) return Node_Ptr;

Parse File and return the first node representing the XML file.

### Parse_Buffer

- Goto spec in source

    function Parse_Buffer (Buffer: UTF8_String) return Node_Ptr;

Parse a given Buffer in memory and return the first node representing the XML contents.

### Print

- Goto spec in source

    procedure Print (N: Node_Ptr;File_Name: String := "");

Write the tree starting with N into a file File_Name. The generated file is valid XML, and can be parsed with the Parse function. If File_Name is the empty string, then the tree is printed on the standard output

### Print

- Goto spec in source

    procedure Print (N: Node_Ptr;File_Name: String;Success: out Boolean);

Same as above, with Success reporting the success of the operation.

### Protect

- Goto spec in source

    function Protect (S: String) return String;

Return a copy of S modified so that it is a valid XML value

### Find_Tag

- Goto spec in source

    function Find_Tag (N: Node_Ptr;Tag: UTF8_String) return Node_Ptr;

Find a tag Tag in N and its brothers.

### Get_Field

- Goto spec in source

    function Get_Field (N: Node_Ptr;Field: UTF8_String) return String_Ptr;

Return the value of the field 'Field' if present in the children of N. Return null otherwise. Do not free the returned value.

### Is_Equal

- Goto spec in source

    function Is_Equal (Node1, Node2: Node_Ptr) return Boolean;

Compare two XML nodes recursively, and returns True if they are equal. Casing in attributes is relevant. Order of attributes is also relevant.

### Add_Child

- Goto spec in source

    procedure Add_Child (N: Node_Ptr;Child: Node_Ptr;Append: Boolean := False);

Add a new child to a node. If Append is true, the child is added at the end of the current list of children.

### Children_Count

- Goto spec in source

    function Children_Count (N: Node_Ptr) return Natural;

Return the number of child nodes

### Deep_Copy

- Goto spec in source

    function Deep_Copy (N: Node_Ptr) return Node_Ptr;

Return a deep copy of the tree starting with N. N can then be freed without affecting the copy.

### Free

- Goto spec in source

    procedure Free (N: in out Node_Ptr;Free_Data: Free_Specific_Data := null);

Free the memory allocated for a node and its children. It also disconnects N from its parent. If Free_Data is not null, it is used to free the memory occupied by the Specific_Data for each node.

### Get_Attribute

- Goto spec in source

    function Get_Attribute (N: in Node_Ptr;Attribute_Name: in UTF8_String;Default: in UTF8_String := "") return UTF8_String;

Return the value of the attribute 'Attribute_Name' if present. Special XML characters have already been interpreted in the result string. Return Default otherwise.

### Set_Attribute

- Goto spec in source

    procedure Set_Attribute (N: Node_Ptr;Attribute_Name, Attribute_Value: UTF8_String);

Create a new attribute, or replace an existing one. The attribute value is automatically protected for special XML characters

### Find_Tag_With_Attribute

- Goto spec in source

    function Find_Tag_With_Attribute (N: Node_Ptr;Tag: UTF8_String;Key: UTF8_String;Value: UTF8_String := "") return Node_Ptr;

Find a tag Tag in N that has a given key (and value if given).