Translate

Saturday, January 1, 2011

Creation of XML file from the Graphtalk instances

Pls look Below code by providing appropriate field names and class name!!!

:dom.create_document (Doc) &
Employees = x:Doc.create_element ("employees") &
create_employees (Doc, Employees) &
x:Doc.append_child (Employees) &
x:Doc.save ("c:\employees.xml") &
x:Doc.release;
create_employees (Doc, Employees) :-
 count (1, 2,Obj= m:obj.find ($contract:p_ci_prot, nil)) &

 create_employee_element (Doc, Obj, EmployeeNode) &
 x:Employees.append_child (EmployeeNode) &
fail;
create_employees (_, _) ;

create_employee_element (Doc, Obj, EmployeeNode) :-
 IdStr = get:Obj.nmbr & get_elt_data (nmbr, Obj, FamilyStr, CountFamily, SepFamily) & get_elt_data (situation, Obj, FirstNStr, CountFirstN, SepFirstN) & EmployeeNode = x:Doc.create_element ("employee") & x:EmployeeNode.set_attribute ("id", IdStr) & create_text_elt (Doc, "nmbr", FamilyStr, CountFamily, SepFamily, Fam) & create_text_elt (Doc, "situation", FirstNStr, CountFirstN, SepFirstN, FirstN) & x:EmployeeNode.append_child (Fam) & x:EmployeeNode.append_child (FirstN);
create_text_elt (Doc, Tag, Content, Count, Sep, Elt) :- Elt = x:Doc.create_element (Tag) & set_attribute_def (Elt, "count", "1", Count) & set_attribute_def (Elt, "separator", " ", Sep) & TextNode = x:Doc.create_text_node (Content) & x:Elt.append_child (TextNode);
set_attribute_def (_, _, Default, Default) :- !;set_attribute_def (Elt, Attr, _, Val) :- x:Elt.set_attribute (Attr, Val);
get_elt_data (Field, Obj, Str, Count, Sep) :- DbData = get:Obj.Field & elt_data (DbData, Str, Count, Sep);
elt_data ([List, Sep], Str, Count, Sep) :- ! & CountI = :lst.length (List) & Count = to_str (CountI) & :lst.make_str (List, Str, Sep);elt_data (Str, Str, "1", _) ;
 

No comments:

Post a Comment