Index

Package: XML (generic)

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

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_Ptr

type Node_Ptr is access all Node;
Pointer to a node of the XML tree.

Free_Specific_Data

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

Subprograms & Entries

Free

procedure Free is new Unchecked_Deallocation 
(String, String_Ptr);
<doc_ignore>

Parse

function Parse 
(File: String) return Node_Ptr;
Parse File and return the first node representing the XML file.

Parse_Buffer

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

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

procedure Print 
(N: Node_Ptr;
File_Name: String;
Success: out Boolean);
Same as above, with Success reporting the success of the operation.

Protect

function Protect 
(S: String) return String;
Return a copy of S modified so that it is a valid XML value

Find_Tag

function Find_Tag 
(N: Node_Ptr;
Tag: UTF8_String) return Node_Ptr;
Find a tag Tag in N and its brothers.

Get_Field

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

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

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

function Children_Count 
(N: Node_Ptr) return Natural;
Return the number of child nodes

Deep_Copy

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

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

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

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

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).