Hosted by
 |
with Ada.Unchecked_Deallocation;
use Ada;
with Parsers;
use Parsers;
package body XML_Parsers is
function Current_Input
return XML_Parser is
begin
return new XML_Parser_Record'(Parser => Parsers.Current_Input);
end Current_Input;
function Open
(File_Name : in String)
return XML_Parser is
begin
return new XML_Parser_Record'(Parser => Parsers.Open(File_Name));
end Open;
procedure Free is
new Unchecked_Deallocation(XML_Parser_Record, XML_Parser);
procedure Close
(X : in out XML_Parser) is
begin
Parsers.Close(X.Parser);
Free(X);
X := null;
end Close;
function Next_Element
(X : in XML_Parser)
return String
is
P : Parser := X.Parser;
begin
if not Skip(P, '<') then Error(P, "expecting '<'"); end if;
declare
Result : String := Read_Word(P);
begin
return Result;
end;
end Next_Element;
function Next_Attribute
(X : in XML_Parser)
return String
is
P : Parser := X.Parser;
begin
Skip_Any(P, Whitespace);
declare
Result : String := Read_Word(P);
begin
return Result;
end;
end Next_Attribute;
function Attribute_Value
(X : in XML_Parser)
return String
is
P : Parser := X.Parser;
begin
Skip_Any(P, Whitespace);
declare
Result : String := Read_Word(P, Whitespace & '=');
begin
return Result;
end;
end Attribute_Value;
procedure Descend
(X : in XML_Parser) is
begin
null;
end Descend;
procedure Ascend
(X : in XML_Parser) is
begin
null;
end Ascend;
procedure Warning
(X : in XML_Parser;
Message : in String) is
begin
Warning(X.Parser, Message);
end Warning;
procedure Error
(X : in XML_Parser;
Message : in String) is
begin
Error(X.Parser, Message);
end Error;
end XML_Parsers;
|