/*
* Ham ghi cac truong cua du lieu xuong file XML
*/
BOOL SaveFileXML(CString sFileName, CDBFile *dbFile)
{
CXMLFile xmlFile;
CXMLElement *xmlElement1, *xmlElementRoot;
xmlElement1 = new CXMLElement;
xmlElementRoot = new CXMLElement;
xmlFile.SetRoot(xmlElementRoot); //tao tag root cho cua file XML
xmlElement1->Create("DataBaseFile",XET_TAG); // tag nay co ten la DatabaseFile
xmlElementRoot->AppendChild(xmlElement1); // set tag nay la tag con cua root
//tao tag Header
CXMLElement *pXmlElementTag;
pXmlElementTag = new CXMLElement();
pXmlElementTag->Create("Header",XET_TAG);
xmlElement1->AppendChild(pXmlElementTag);//tag header la tag con cua tag DatabaseFile
//tao tag HeaderField
CXMLElement *pXmlElementField;
pXmlElementField = new CXMLElement;
pXmlElementField->Create("HeaderFields",XET_TAG);
xmlElement1->AppendChild(pXmlElementField);
//tao tag Record
CXMLElement *pXmlElementRecords;
pXmlElementRecords = new CXMLElement;
pXmlElementRecords->Create("Records",XET_TAG);
xmlElement1->AppendChild(pXmlElementRecords);
/************************************************************************/
/* Phan ghi Header cua database file */
/************************************************************************/
CString arrStrHeader[12];
dbFile->HeaderMainToString(arrStrHeader);
//ghi tag Head
//ghi cac tag la con cua tag head
WriteXMLTag(pXmlElementTag,CString("Virsion"),arrStrHeader[0]);
WriteXMLTag(pXmlElementTag,CString("LastUpdate"),arrStrHeader[1]);
WriteXMLTag(pXmlElementTag,CString("NumberRecord"),arrStrHeader[2]);
WriteXMLTag(pXmlElementTag,CString("HeaderLength"),arrStrHeader[3]);
WriteXMLTag(pXmlElementTag,CString("RecordLength"),arrStrHeader[4]);
WriteXMLTag(pXmlElementTag,CString("Reservode1"),arrStrHeader[5]);
WriteXMLTag(pXmlElementTag,CString("dBaseTranFlag"),arrStrHeader[6]);
WriteXMLTag(pXmlElementTag,CString("EnCryptFlag"),arrStrHeader[7]);
WriteXMLTag(pXmlElementTag,CString("dBaseMultiUser"),arrStrHeader[8]);
WriteXMLTag(pXmlElementTag,CString("Indexed"),arrStrHeader[9]);
WriteXMLTag(pXmlElementTag,CString("dbLangID"),arrStrHeader[10]);
WriteXMLTag(pXmlElementTag,CString("Reservide2"),arrStrHeader[11]);
/************************************************************************ /
/* //phan ghi Fieldhead cua database * /
/ ************************************************************************/
CArray<CString,CString&> arrField;
arrField.SetSize(1);
dbFile->FieldHeaderToString(arrField);
int nCountField = 1;
for(int i=0; i<dbFile->GetnField(); i++)
{
CXMLElement *xmlElementFieldi;
xmlElementFieldi = new CXMLElement;
CString s;
s.Format("HeaderField",i+1);
xmlElementFieldi->Create(s.GetBuffer(1),XET_TAG);
pXmlElementField->AppendChild(xmlElementFieldi);
//ghi cac thuoc tinh cua no
WriteXMLTag(xmlElementFieldi,CString("FieldName"),arrField.GetAt(nCountField++));
WriteXMLTag(xmlElementFieldi,CString("FieldType"),arrField.GetAt(nCountField++));
WriteXMLTag(xmlElementFieldi,CString("FieldLength"),arrField.GetAt(nCountField++));
}
/************************************************************************/
/* //phan ghi dataRecord cua database */
/************************************************************************/
CArray<CString,CString&> sDataRecord;
sDataRecord.Copy(dbFile->sDataRecord);
int nCount = 0,nRecord = dbFile->GetnRecord();
int iCount = 0;
while (nCount < nRecord)
{
//tao tag Record thu i
CXMLElement *pXmlElementRecord;
pXmlElementRecord = new CXMLElement;
pXmlElementRecord->Create("Record",XET_TAG);
pXmlElementRecords->AppendChild(pXmlElementRecord);
nCountField = 1;
for(int i=0; i< dbFile->GetnField(); i++)
{
WriteXMLTag(pXmlElementRecord,arrField.GetAt(nCountField),sDataRecord.GetAt(iCount++));
nCountField+=3;
}
nCount ++;
}
xmlFile.SaveToFile(sFileName.GetBuffer(1)); // sau khi ghi xong chúng ta lưu file này lại.
return true;
}