You need to sign in to do that
Don't have an account?
s_mac
Generate XML dynamically
Hi,
I have to generate an XML to send as Request, from a list returned by a dynamic soql query.The fields to be queried from the object in the soql will be in my custom settings like name-Account,and fields to be queried in the record of account.
How do I generate XML, for dynamic object selected and its fields,suppose if I select object 'B', in my page,i should generate XML for the object B with the fields in the custom setting mapped to B or if its object A the fields for object A from the custom settings...
Thanks in Advance..
I have to generate an XML to send as Request, from a list returned by a dynamic soql query.The fields to be queried from the object in the soql will be in my custom settings like name-Account,and fields to be queried in the record of account.
How do I generate XML, for dynamic object selected and its fields,suppose if I select object 'B', in my page,i should generate XML for the object B with the fields in the custom setting mapped to B or if its object A the fields for object A from the custom settings...
Thanks in Advance..
Template_Custom_Setting__c myCS1 = Template_Custom_Setting__c.getValues(oAccount.XML_Response__c);
//Question:how do i get the fields i.e values in each field of the above custom setting?? for now im splitting by comma,and then by = and based on the index positions in the array i am getting the fields into a string...called finalFields.
now from the query returned i have to generate XML with field label and its value dynamically
xmlResponse = 'Select Id'+finalFields+' from Account Where Id ='+' \''+CurrentPageId+'\'';
Account Acc = Database.query(xmlResponse);
XmlStreamWriter w = new XmlStreamWriter();
w.writeStartDocument(null, '1.0');
w.writeStartElement(null, 'accounts', null);
w.writeStartElement(null, 'account', null);
w.writeStartElement(null, 'accountid', null);
w.writeCharacters(Acc.Id);
w.writeEndElement();
w.writeStartElement(null, 'AccountName', null);
w.writeCharacters(Acc.Name);
w.writeEndElement();
w.writeEndElement();
w.writeEndElement();
w.writeEndDocument();
something like this I will not always get AccountID,Account NAme ... the fields may differ based on the custom setting i select
List<String> fieldNames = new List<String>();
for(Template_Custom_Setting__c thisCs : Template_Custom_Setting__c.getValues(objectName)){
// Keep your splitting logic for getting the fields name as is.
fieldNames.add(thisCs.fieldName);
}
for(String thisField : fieldNames){
finalFields =+ thisField;
}
String queryString = 'Select Id'+finalFields+' from Account Where Id ='+' \''+CurrentPageId+'\'';
List<sObject> sobjList = Database.query(queryString);
// Iterate over the list of field names.
for(sObject thisRecord : sobjList){
for(String thisField : fieldNames){
system.debug('#### Field Name = '+thisField);
system.debug('#### Field Value = '+thisRecord.get(thisField));
// you can create your XML structure, with the above values.
}
}
If my suggestion(s) worked, do let me know by marking the answer as "Best Answer" right under the comment.
This will help the rest of the community should they have a similar issue in the future.
Thank you..