Create XML and write to file


 static void WriteXml(Args _args)  
 {  
 XmlDocument xmlDoc;  
 XmlElement xmlRoot;  
 XmlElement xmlField;  
 XmlElement xmlRecord;  
 XMLWriter xmlWriter;  
 CarTable carTable;  
 DictTable dTable = new DictTable(tablenum(CarTable));  
 DictField dField;  
 int i, fieldId;  
 str value;  
 #CarsXmlTags  
 ;  
 // Create a new object of the XmlDocument class  
 xmlDoc = XmlDocument::newBlank();  
 // Create the root node  
 xmlRoot = xmlDoc.createElement(#CarRootNode);  
 // Loop through all the records in the carTable  
 while select carTable  
 {  
 // Create a XmlElement (record) to hold the  
 // contents of the current record.  
 xmlRecord = xmlDoc.createElement(#CarRecords);  
 // Loop through all the fields in the record  
 for (i=1; i<=dTable.fieldCnt(); i++)  
 {  
 // Get the fieldId from the field-count  
 fieldId = dTable.fieldCnt2Id(i);  
 // Find the DictField object that matches  
 // the fieldId  
 dField = dTable.fieldObject(fieldId);  
 // Skip system fields  
 if (dField.isSystem())  
 continue;  
 // Create a new XmlElement (field) and  
 // have the name equal to the name of the  
 // dictField  
 xmlField = xmlDoc.createElement(dField.name());  
 // Convert values to string. I have just added  
 // a couple of conversion as an example.  
 // Use tableName.(fieldId) instead of fieldname  
 // to get the content of the field.  
 switch (dField.baseType())  
 {  
 case Types::Int64 :  
 value = int642str(carTable.(fieldId));  
 break;  
 case Types::Integer :  
 value = int2str(carTable.(fieldId));  
 break;  
 default :  
 value = carTable.(fieldId);  
 break;  
 }  
 // Set the innerText of the XmlElement (field)  
 // to the value from the table  
 xmlField.innerText(value);  
 // Append the field as a child node to the record  
 xmlRecord.appendChild(xmlField);  
 }  
 // Add the record as a child node to the root  
 xmlRoot.appendChild(xmlRecord);  
 }  
 // Add the root to the XmlDocument  
 xmlDoc.appendChild(xmlRoot);  
 // Create a new object of the XmlWriter class  
 // in order to be able to write the xml to a file  
 xmlWriter = XMLWriter::newFile(@"c:\temp\cars.xml");  
 // Write the content of the XmlDocument to the  
 // file as specified by the XmlWriter  
 xmlDoc.writeTo(xmlWriter);