This package provides a simple minded XML parser to be used with Gate.
Types |
|---|
type Free_Specific_Data is access procedure
(Data : in out XML_Specific_Data);
| |
|
| |
type Node is record
Tag : String_Ptr;
-- The name of this node
Attributes : String_Ptr;
-- The attributes of this node
Value : String_Ptr;
-- The value, or null is not relevant
Parent : Node_Ptr;
-- The parent of this Node.
Child : Node_Ptr;
-- The first Child of this Node. The next child is Child.Next
Next : Node_Ptr;
-- Next "brother" node.
Specific_Data : XML_Specific_Data;
-- Use to store data specific to each implementation (e.g a boolean
-- indicating whether this node has been accessed)
end record;
| |
|
A node of the XML tree.
Each time a tag is found in the XML file, a new node is created, that
points to its parent, its children and its siblings (nodes at the same
level in the tree and with the same parent).
| |
type Node_Ptr is access all Node; | |
|
Pointer to a node of the XML tree.
| |
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.
|
Subprograms |
|---|
function Parse (File : String) return Node_Ptr; | ||
|
Parse File and return the first node representing the XML file.
| ||
procedure Print (N : Node_Ptr; Indent : Natural := 0; File_Name : String := ""); | ||
|
Write the tree starting with N into a file File_Name. The generated | ||
function Find_Tag (N : Node_Ptr; Tag : String) return Node_Ptr; | ||
|
Find a tag Tag in N and its brothers.
| ||
function Get_Field (N : Node_Ptr; Field : String) return String_Ptr; | ||
|
Return the value of the field 'Field' if present in the children of N. | ||
procedure Add_Child (N : Node_Ptr; Child : Node_Ptr); | ||
|
Add a new child to a node.
| ||
function Deep_Copy (N : Node_Ptr) return Node_Ptr; | ||
|
Return a deep copy of the tree starting with N. N can then be freed | ||
procedure Free (N : in out Node_Ptr; Free_Data : Free_Specific_Data := null); | ||
|
Free the memory allocated for a node and its children. | ||
function Get_Attribute (N : in Node_Ptr; Attribute_Name : in String) return String_Ptr; | ||
|
Return the value of the attribute 'Attribute_Name' if present. | ||