Wednesday, March 5, 2008

How to create an XML file from the Graphtalk instances

Just copy paste the 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: